お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-01-02 21:28:50

isamrx72
メンバ
登録日: 2008-02-17

コンパイルエラーになります。エラーの回避は?

【解決しました】
Eclipse+CDTが環境です。上の部分がソース、下はコンソールのメッセージです。
/*
============================================================================
Name        : cp2.c
Author      :
Version     :
Copyright   : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void) {
    int i;

    for (i=0; i<=10; i++)
    {
        printf("%3d %5f\n", i, sqrt(i));
    }

    return EXIT_SUCCESS;
}
==============================================
**** Build of configuration Debug for project cp2 ****

make all
Building target: cp2
Invoking: GCC C Linker
gcc  -o"cp2"  ./src/cp2.o   
./src/cp2.o: In function `main':
/home/isamrx72/C++workspace/cp2/Debug/../src/cp2.c:20: undefined reference to `sqrt'
collect2: ld はステータス 1 で終了しました
make: *** [cp2] エラー 1
==============================================
端末からコンパイルする時は
gcc -lm -o cp2 cp2.c
の様にすれば、うまく行くはず。どうすれば、コンパイルのオプションをうまくしてできるか分かりません。教えて下さい。

最後の編集者: isamrx72 (2009-01-10 10:32:06)

オフライン

 

#2 2009-01-02 21:57:46

cjohn
メンバ
登録日: 2008-12-21

Re: コンパイルエラーになります。エラーの回避は?

Eclipse 3.4+CDT(英語版)で試してみました。
メニューの「Project」→「Properties」を表示
左ペインから「C/C++ Build」→「Settings」を選択
右ペイン内の「Tools Settings」タブを選択し、「GCC C Liner」→「Libraries」を選択
「Libraries(-l)」リストに「m」を追加します
これでビルドを行うとコンソールの表示が「gcc  -o"cp2"  ./src/cp2.o   -lm」となり、ビルドできました。

オフライン

 

#3 2009-01-02 22:54:32

isamrx72
メンバ
登録日: 2008-02-17

Re: コンパイルエラーになります。エラーの回避は?

cjohn による投稿:

Eclipse 3.4+CDT(英語版)で試してみました。
メニューの「Project」→「Properties」を表示
左ペインから「C/C++ Build」→「Settings」を選択
右ペイン内の「Tools Settings」タブを選択し、「GCC C Liner」→「Libraries」を選択
「Libraries(-l)」リストに「m」を追加します
これでビルドを行うとコンソールの表示が「gcc  -o"cp2"  ./src/cp2.o   -lm」となり、ビルドできました。

cjohnさん、回答有難うございました。
Eclipse Platform
Version: 3.4.1
Build id: M20080911-1700
で、バージョンは同じの様でしたが、

右ペイン内の「Tools Settings」タブを選択し、「GCC C Liner」→「Libraries」を選択
「Libraries(-l)」リストに「m」を追加します
これでビルドを行うとコンソールの表示が「gcc  -o"cp2"  ./src/cp2.o   -lm」となり、ビルドできました。
 
右ペイン以下が同じく出来ません。「Tools Setting」かありません。?

オフライン

 

#4 2009-01-04 01:48:58

isamrx72
メンバ
登録日: 2008-02-17

Re: コンパイルエラーになります。エラーの回避は?

isamrx72 による投稿:

cjohn による投稿:

Eclipse 3.4+CDT(英語版)で試してみました。
メニューの「Project」→「Properties」を表示
左ペインから「C/C++ Build」→「Settings」を選択
右ペイン内の「Tools Settings」タブを選択し、「GCC C Liner」→「Libraries」を選択
「Libraries(-l)」リストに「m」を追加します
これでビルドを行うとコンソールの表示が「gcc  -o"cp2"  ./src/cp2.o   -lm」となり、ビルドできました。

cjohnさん、回答有難うございました。
Eclipse Platform
Version: 3.4.1
Build id: M20080911-1700
で、バージョンは同じの様でしたが、

右ペイン内の「Tools Settings」タブを選択し、「GCC C Liner」→「Libraries」を選択
「Libraries(-l)」リストに「m」を追加します
これでビルドを行うとコンソールの表示が「gcc  -o"cp2"  ./src/cp2.o   -lm」となり、ビルドできました。
 
右ペイン以下が同じく出来ません。「Tools Setting」かありません。?

結論から言えば、出来ました。cjohnさん、回答有難うございました。確認のため、手順を書けば、
Eclipseの画面から
Project、Properties,左ペインのC/C++Buildの右△クリック、Settings、GCC C Linker、Libraries、(ーl)でADDでmを入力
で、出来ました。以上の意味は、Linkの時、ライブラリを使うとかの意味なんでしょうが、正確に意味するところは何なんでしょうか?

オフライン

 

#5 2009-01-04 09:40:47

CMasami
拒否
From: Utsunomiya
登録日: 2007-12-13

Re: コンパイルエラーになります。エラーの回避は?

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

最後の編集者: CMasami (2009-01-04 09:41:40)

オフライン

 

#6 2009-01-05 00:25:09

isamrx72
メンバ
登録日: 2008-02-17

Re: コンパイルエラーになります。エラーの回避は?

CMasami による投稿:

libc         C言語標準ライブラリ
libm        数学(Math)ライブラリ
libstdcpp C++言語標準ライブラリ
標準ライブラリはソースファイルが何言語かによって自動的にリンク、
その他のライブラリはgccの引数に  libm なら頭のlib を取って -lm として指定します。

よその質問で 「libdvdcss2をインストールできません。 」なんつうのがありましたが
自分のプログラムで libdvdcss2 に用意されている関数・クラス・構造体・定義を使うとき
は -ldvdcss2 ってgccに指定します。

こんな説明でいかがでしょう?

CMasamiさん、回答有難うございました。
 何かのときに思い出すように、肝に命じておきます。自分はC言語の標準ライブラリしか使っていなかった様ですね。

オフライン

 

Board footer

Powered by FluxBB