加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:53:17 所属栏目:百科 来源:网络整理
导读:这是 Linux编程书的引用: % gcc -o app app.o -L. –ltest 假设libtest.a和libtest.so都可用.然后链接器必须 选择其中一个库,而不是其他.链接器搜索每个目录(第一个 那些用-L选项指定的,然后在那些标准目录中) 链接器查找包含libtest.a或libtest.so的目录,
这是 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?

解决方法

如果您的链接器支持它(ld的旧版本),则可以使用其表单-l:filename的-l选项
gcc -o app app.o -L. -l:libtest.so

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读