2010-02-17 87 views
4

我注意到,當我讓我用gcc應用,並在鏈接階段看輸出,我看到包含兩次以下的lib:可以連接兩次相同的庫是g ++的問題嗎?

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

所以我只是想知道這是g ++(gcc)的問題,還是第二個被忽略?

謝謝!

回答

7

如果庫中的符號已被解析,鏈接器將忽略它們。在這種情況下,與共享庫一樣,鏈接器實際上並不鏈接。

對於靜態(.a)中的庫,在命令行上的多個副本實際上是有用的,如果不是很漂亮,例如,如果主訪問libb它訪問的libc,用於訪問libb東西不是主要訪問:

ld main.o -lb -lc -lb 

是解決所有參考的一種方法。

+2

您可以使用 - (-lb -lc - )或-start-group -lb -lc -end-group更優雅地實現相同的功能。然後迭代分組庫,直到沒有其他符號被解析。 – Clifford

相關問題