我有一个C ++代码,但我无法使用-static
进行编译。这是我的代码:
#include <iostream>
#include <optimization.h>
int main(){
std::cout << opti::minimize(1,2) << std::endl;
return EXIT_SUCCESS;
}
当我在终端上输入时:
g++ main.cpp -loptimization -std=c++11
它有效,但是当我输入时:
g++ main.cpp -loptimization -static -std=c++11
它不起作用我根本不明白为什么?
我明白了:
/usr/bin/ld: cannot find -loptimization
collect2: error: ld returned 1 exit status
答案 0 :(得分:4)
-static
在支持动态链接的系统上,这会阻止与共享库的链接。在其他系统上,此选项没有 影响。 (...)
这意味着您可能没有安装库的静态版本。您应该检查/usr/lib
和/usr/local/lib
。动态库以.so
结尾,而静态库以.a
结尾。
答案 1 :(得分:-2)
编辑: 有时g ++或gcc编译器的选项顺序很重要(我的意思是,我已经遇到链接库的这种麻烦),然后我认为你应该尝试其他顺序,如下所示:
g++ -static -std=c++11 main.cpp -loptimization
或
g++ -static -loptimization -std=c++11 main.cpp