这是Linux编程书的引文:



假设libtest.alibtest.so都可用,那么链接器必须
选择一个库而不是另一个库。链接器搜索每个目录(第一个
使用-L选项指定的选项,然后是标准目录中的选项)。
链接器找到包含libtest.alibtest.so的目录,链接器停止
搜索目录。如果目录中只有两种变体之一,则链接器
选择该变体。否则,链接程序将选择共享库版本,除非
否则,您会明确指示。可以使用-static选项要求静态
文件。例如,以下行将使用libtest.a存档,即使libtest.so共享库也可用:
% gcc -static -o app app.o -L. –ltest
因为如果链接器遇到包含libtest.a的目录,它将停止搜索并使用该静态库,那么如何强制链接器仅搜索共享库而不搜索静态库?
% gcc -o app app.o -L. libtest.so

最佳答案

如果链接器支持,则可以使用-l形式的-l:filename选项(旧版本的ld不支持)

gcc -o app app.o -L. -l:libtest.so

另一种选择是直接使用文件名而不使用-l-L
gcc -o app app.o /path/to/library/libtest.so

07-26 00:46