小编典典

直接告诉 gcc 静态链接库

all

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

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

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


阅读 62

收藏
2022-08-21

共1个答案

小编典典

使用-l:而不是-l. 例如-l:libXYZ.a链接到libXYZ.a.
注意liband.a被写出,而不是-lXYZ自动扩展为libXYZ.so/ libXYZ.a

它是GNUld链接器的一个选项:

-l namespec…如果 namespec 的格式为:filenameld将在库路径中搜索名为 filename
的文件,否则将在库路径中搜索名为libnamespec.a. … 在 ELF …
系统上,ld将在一个目录中搜索一个名为的库libnamespec.so,然后再搜索一个名为libnamespec.a.
…请注意,此行为不适用于:filename,它始终指定一个名为 filename 的文件。”

(从binutils 2.18
开始

请注意,这只适用于 GNU 链接器。如果您ld不是 GNU,那您就不走运了。

2022-08-21