繁体   English   中英

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

[英]how to force linker to use shared library instead of static library?

这是Linux编程书的引用:


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

假设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 % gcc -o app app.o -L. libtest.so

如果你的链接器支持它,你可以在它的形式-l:filename使用-l选项(旧版本的ld没有)

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

其他选项是直接使用文件名而不使用-l-L

gcc -o app app.o /path/to/library/libtest.so

来自男人:

-shared-libgcc中
-static-libgcc中
在将libgcc作为共享库提供的系统上,这些选项分别强制使用共享版本或静态版本。 如果在配置编译器时未构建libgcc的共享版本,则这些选项无效。

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM