首页 > 解决方案 > 为什么添加“-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

谢谢,-安德烈斯

标签: linuxgcc

解决方案


您的命令指示编译器将“-static”传递给链接器——这意味着创建一个静态可执行文件。您可能正在寻找的是-Wl,-Bstatic在此语句之后选择库的静态版本的方法。请注意,仅当有两个版本(静态和共享)可用时才需要这样做。如果您的库只有库的静态版本,则无需-Wl,-Bstatic声明即可选择该库。


推荐阅读