【发布时间】:2015-05-10 08:55:16
【问题描述】:
我在 CentOS 中编译 C 并遇到这个错误:
cc -c -o obj/BT.o BT.c -I./include -I/usr/dialogic/inc cc -o BT obj/BT.o obj/util.o -I./include -I/usr/dialogic/inc -L/usr/dialogic/lib
obj/BT.o:在函数'main'中:
BT.c:(.text+0x52): 未定义对 `gc_Start' 的引用
collect2: ld 返回 1 个退出状态 make: *** [BT] 错误 1
我已经链接到库 -L/usr /dialogic/lib 但我不知道为什么它在创建二进制文件时没有链接
拜托,谁能给我一些建议?
【问题讨论】:
-
-L选项是告诉链接器在哪里搜索库,它实际上并不与任何库链接,因为你需要-l(小写 L) 选项。 -
您只指定了一个链接路径 - 您还需要通过
-lname指定库,其中name表示libname.a。 -
感谢您的回答。这是我的库,它是动态库:
libgc.so,我已经使用了-llibgc选项,它显示错误/usr/bin/ld: cannot find -llibgc。这是我的命令:`cc -o rrbt obj/BT.o obj/util.o -I./include -I/usr/dialogic/inc -L/usr/dialogic/lib -llibgc` -
我只使用
-lgc它显示错误:/usr/bin/ld: skipping incompatible /usr/dialogic/lib/libgc.so when searching for -lgc。这是由于与当前 gcc 不兼容的 lib 造成的吗? -
我只是修复它。我将代码移动到 CentOS 32 位,它编译得很好,可能是由于 CenOS 64 位中的 lib 不兼容。非常感谢