直接告诉gcc静态链接一个库

使用-Wl,-Bstatic为了告诉gcc我想静态链接哪些库,感觉很奇怪。 毕竟我直接告诉gcc有关链接库的所有其他信息( -Ldir-llibname )。

是否有可能直接告诉gcc驱动程序哪些库应该静态链接?

澄清:我知道如果某个库仅存在于静态版本中,它将在没有-Wl,-Bstatic情况下使用它,但我希望暗示gcc更喜欢静态库。 我也知道直接指定库文件会与它链接,但我更愿意保持包含静态和动态库的语义相同。


当然,可以使用-l:而不是-l 。 例如-l:libXYZ.alibXYZ.a链接的libXYZ.a 。 注意lib写出来,而不是-lXYZ ,它会自动扩展为libXYZ


您可以在链接命令中添加.a文件:

  gcc yourfiles /path/to/library/libLIBRARY.a

但是这不是与gcc驱动程序交谈,而是使用ld链接程序作为选项,如-Wl,anything都可以。

当你告诉gcc或ld“-Ldir -lLIBRARY”时,链接器将检查库的静态和动态版本(你可以看到一个具有-Wl,--verbose的进程)。 要更改检查的库类型的顺序,可以使用-Wl,-Bstatic-Wl,-Bdynamic 。 这里是gnu LD的手册页面:http://linux.die.net/man/1/ld

要动态地将程序与lib1,lib3和lib2静态链接,请使用以下gcc调用:

gcc program.o -llib1 -Wl,-Bstatic -llib2 -Wl,-Bdynamic -llib3

假定ld的默认设置是使用动态库(它在Linux上)。

链接地址: http://www.djcxy.com/p/85765.html

上一篇: Telling gcc directly to link a library statically

下一篇: Static link of shared library function in gcc