
Ubuntu日本語フォーラム

ログインしていません。
【解決しました】
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)
オフライン
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 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」かありません。?
オフライン
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の時、ライブラリを使うとかの意味なんでしょうが、正確に意味するところは何なんでしょうか?
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: CMasami (2009-01-04 09:41:40)
オフライン
CMasami による投稿:
libc C言語標準ライブラリ
libm 数学(Math)ライブラリ
libstdcpp C++言語標準ライブラリ
標準ライブラリはソースファイルが何言語かによって自動的にリンク、
その他のライブラリはgccの引数に libm なら頭のlib を取って -lm として指定します。
よその質問で 「libdvdcss2をインストールできません。 」なんつうのがありましたが
自分のプログラムで libdvdcss2 に用意されている関数・クラス・構造体・定義を使うとき
は -ldvdcss2 ってgccに指定します。
こんな説明でいかがでしょう?
CMasamiさん、回答有難うございました。
何かのときに思い出すように、肝に命じておきます。自分はC言語の標準ライブラリしか使っていなかった様ですね。
オフライン