linux - 为什么添加“-Wl,-static -lmy_static_lib”会破坏库搜索路径?
问题描述
我有一个使用多个 .so 库进行链接的构建。我现在想向应用程序添加一个静态库,所以我在 g++ 编译行中附加了(在命令行编译器选项的末尾)以下内容:
-Wl,-static -lmy_static_lib
这破坏了我的构建并出现以下错误:
usr/bin/ld: cannot find -lgcc_s
我尝试了几件事,例如重新排列 -l 库,将静态选项放在第一个,最后一个,为 libgcc_s.so 的路径提供 -L 等。
有人对如何在不破坏现有构建的情况下将该静态库添加到我的构建中提出建议吗?顺便说一句:这是在 Ubuntu 16.04 上,g++ 版本 5.4.0
谢谢,-安德烈斯
解决方案
您的命令指示编译器将“-static”传递给链接器——这意味着创建一个静态可执行文件。您可能正在寻找的是-Wl,-Bstatic
在此语句之后选择库的静态版本的方法。请注意,仅当有两个版本(静态和共享)可用时才需要这样做。如果您的库只有库的静态版本,则无需-Wl,-Bstatic
声明即可选择该库。
推荐阅读
- ibm-cloud - 如何改进 Watson Speech to Text 演讲者标签
- java - 如何更改 ClusterManager 中标记的可见性同时还可以访问 ClusterItem 对象?
- php - 在另一个数组中查找数组的键
- c# - Xamarin 自定义字体显示在预览中,但不在构建中
- javascript - 等待响应并返回非 json
- php - 如何在laravel的链接按钮中隐藏URL
- build.gradle - 运行 serenity 测试用例时获取 java.lang.AbstractMethodError
- ruby-on-rails-5 - 在 Rails 中下载多个文件
- python - 循环导入从 pylint 修复 R0401
- php - 如何从 CodeIgniter 中的多个连接表中删除。