可以用同一个库连接两次是g ++的问题吗?

bba*_*zso 4 c++ gcc g++

我注意到当我使用gcc创建应用程序并在链接阶段查看输出时,我看到以下lib包含两次:

/home/rb01/opt/trx-HEAD/gcc/4.2.4/lib/../lib64/libstdc++.so

所以我只是想知道这是g ++(gcc)的问题,还是第二个被忽略了?

谢谢!

Ric*_*ton 7

如果库中的符号已经解析,则链接器会忽略它们.对于共享库,就像在这种情况下,链接器实际上并不实际链接.

对于静态(.a)库,命令行上的多个副本实际上可能很有用,如果不是很漂亮,例如主访问libb访问libc,libc访问libb中没有被main访问的东西:

ld main.o -lb -lc -lb
Run Code Online (Sandbox Code Playgroud)

是解决所有引用的一种方法.

  • 您可以使用 - (-lb -lc - )或-start-group -lb -lc -end-group来更优雅地实现相同的功能.然后迭代分组的库,直到不再解析其他符号. (2认同)