Ubuntu 10.10でリンクするときにこの「未定義の参照」エラーを解決する方法を教えてください。
conftest.c:(.text+0x4): `glib_major_version' への未定義の参照
conftest.c:(.text+0xd): `glib_minor_version' への未定義の参照
conftest.c:(.text+0x16): `glib_micro_version' への未定義の参照
collect2: ld は 1 の終了ステータスを返しました
.bashrc に「export LD_LIBRARY_PATH=/usr/lib:/lib:$LD_LIBRARY_PATH」を追加しました。
$ ls -la libgl*.*
lrwxrwxrwx 1 ルート ルート 23 2010-12-17 18:29 libglib-2.0.so.0 -> libglib-2.0.so.0.2600.0
-rw-r--r-- 1 ルート ルート 842208 2010-09-27 16:16 libglib-2.0.so.0.2600.0
/lib $ pwd
/ライブラリ
しかし、それでは問題は解決しません。どうすればいいでしょうか?
答え1
コンパイルするためにどのコマンドを実行していますか?
このエラーの原因となる他のエラーはありますか?
私もあなたと同じバージョンのファイルを持っており、そこにはそれらのシンボルが含まれています。
$ ls -l libglib*
lrwxrwxrwx 1 root root 23 2010-12-05 06:03 libglib-2.0.so.0 -> libglib-2.0.so.0.2600.0
-rw-r--r-- 1 root root 842208 2010-09-28 09:16 libglib-2.0.so.0.2600.0
$ nm -D libglib-2.0.so.0.2600.0 | grep version
00073730 T glib_check_version
000c849c R glib_major_version
000c84a4 R glib_micro_version
000c84a0 R glib_minor_version
glib
独自のプログラムをコンパイルしていますか? おそらく、オプションを追加してリンカーにリンクするように指示する必要があるだけです-lglib-2.0
。
を実行している場合は
gcc -o conftest conftest.c
、
gcc -o conftest -lglib-2.0 conftest.c
代わりに を実行する必要があります。
または、-lglib-2.0
に追加することもできますLDFLAGS
。
他の人のプログラムをコンパイルしていますか? を使用している可能性がありますpkgconfig
。 の中に混乱を招くものがある可能性があります/usr/local
。
他のプログラムやライブラリを自分でインストールしましたか? おそらく、 に自動的にインストールされたものでしょうか/usr/local/lib
?
何がcat /usr/lib/pkgconfig/glib*
書いてある?
何がcat /usr/local/lib/pkgconfig/glib*
書いてある?
LD_LIBRARY_PATH
を含めるにはの値を変更する/usr/local/lib
か、 を変更するかPKG_CONFIG_PATH
、 にいくつかのオプションを追加することが必要になる場合があります./configure
。
答えはあなたが何をしているかによって異なります。