我注意到当我使用gcc创建应用程序并在链接阶段查看输出时,我看到以下lib包含两次:
/home/rb01/opt/trx-HEAD/gcc/4.2.4/lib /../ lib64下/的libstdc ++。这样
所以我只是想知道这是g ++(gcc)的问题,还是第二个被忽略了?
谢谢!
答案 0 :(得分:7)
如果库中的符号已经解析,则链接器会忽略它们。对于共享库,就像在这种情况下一样,链接器实际上并不实际链接。
对于静态(.a)库,命令行上的多个副本实际上可能很有用,如果不是很漂亮,例如主访问libb访问libc,libc访问libb中某些东西不能访问的东西:
ld main.o -lb -lc -lb
是解决所有引用的一种方法。