这是Linux编程书的引文:
假设libtest.a
和libtest.so
都可用,那么链接器必须
选择一个库而不是另一个库。链接器搜索每个目录(第一个
使用-L
选项指定的选项,然后是标准目录中的选项)。
链接器找到包含libtest.a
或libtest.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