这是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
?
答案 0 :(得分:19)
如果您的链接器支持-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
{{1}}
答案 1 :(得分:0)
来自男人:
祝你好运-shared-libgcc中
-static-libgcc的
在提供libgcc作为共享库的系统上,这些选项 分别强制使用共享版本或静态版本。 如果编译器没有构建libgcc的共享版本 配置,这些选项无效。