-Wl,-Bstatic使用它来告诉gcc我要静态链接哪些库对我来说感觉很奇怪。毕竟,我gcc直接告诉所有其他有关与库链接的信息(-Ldir, -llibname)。
-Wl,-Bstatic
gcc
-Ldir
-llibname
是否可以直接告诉 gcc 驱动程序应该静态链接哪些库?
澄清: 我知道如果某个库仅存在于静态版本中,它将在没有 的情况下使用它-Wl,-Bstatic,但我想暗示gcc更喜欢静态库。我也知道直接指定库文件会与其链接,但我更喜欢保持包含静态库和动态库的语义相同。
使用-l:而不是-l. 例如-l:libXYZ.a链接到libXYZ.a. 注意liband.a被写出,而不是-lXYZ自动扩展为libXYZ.so/ libXYZ.a。
-l:
-l
-l:libXYZ.a
libXYZ.a
lib
.a
-lXYZ
libXYZ.so
它是GNUld链接器的一个选项:
ld
-l namespec…如果 namespec 的格式为:filename,ld将在库路径中搜索名为 filename 的文件,否则将在库路径中搜索名为libnamespec.a. … 在 ELF … 系统上,ld将在一个目录中搜索一个名为的库libnamespec.so,然后再搜索一个名为libnamespec.a. …请注意,此行为不适用于:filename,它始终指定一个名为 filename 的文件。”
-l namespec
:filename
libnamespec.a
libnamespec.so
(从binutils 2.18 开始)
请注意,这只适用于 GNU 链接器。如果您ld不是 GNU,那您就不走运了。