你能告诉我在 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 退出状态
我已将“export LD_LIBRARY_PATH=/usr/lib:/lib:$LD_LIBRARY_PATH”添加到我的 .bashrc。
$ ls -la libgl*.*
lrwxrwxrwx 1 root root 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 $ 密码
/lib
但这并不能解决问题。我该怎么办?
答案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
。
答案取决于你正在做什么。