为什么在库搜索路径中添加“ -Wl,-static -lmy_static_lib”文件?

时间:2018-08-12 05:31:33

标签: linux gcc

我有一个使用几个.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上

谢谢, -安德烈斯

1 个答案:

答案 0 :(得分:0)

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

相关问题