![](/img/trans.png)
[英]How to use static library(.a file) instead of a group of object files(.o) to create a shared library
[英]how to force linker to use shared library instead of static library?
这是Linux编程书的引用:
% gcc -o app app.o -L. –ltest
假设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
% 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.