无法编译我的代码

时间:2017-05-03 21:02:06

标签: c++ c++11 c++14

我有一个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

2 个答案:

答案 0 :(得分:4)

来自documentation

  

-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