多个库文件链接顺序问题
这种问题非常隐蔽,不仔细研究,可能会感到非常地莫名其妙。以第三个示例为测试代码,把链接库的顺序换一下,如下所示:
-
$ gcc -o main main.c func.a test.a
-
test.a(test.o): In function `test':
-
test.c:(.text+0x13): undefined reference to `func'
-
collect2: ld returned 1 exit status
因此,在链接命令中给出所依赖的库时,需要注意库之间的依赖顺序,依赖其他库的库一定要放到被依赖库的前面,这样才能真正避免undefined reference
的错误,完成编译链接。
备注:在MAC
上可以正常编译通过。
>ps
./lib/libcpp_redis.a ./lib/libtacopie.a