一尘不染

如何强制链接器使用共享库而不是静态库?

linux

这是Linux编程书的引文:


% gcc -o app app.o -L. –ltest

假设这两个libtest.alibtest.so是available.Then链接器必须选择的图书馆之一,而不是other.The链接搜索每个目录(第那些指定的-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


阅读 278

收藏
2020-06-07

共1个答案

一尘不染

如果链接器支持,则可以使用-l其形式的option -l:filenameld不支持旧版本)

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

另一种选择是直接使用文件名而不使用-l-L

gcc -o app app.o /path/to/library/libtest.so
2020-06-07