【问题标题】:unable to compile my code无法编译我的代码
【发布时间】:2017-05-03 21:02:05
【问题描述】:

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

【问题讨论】:

  • 你遇到了什么错误?详细张贴
  • 你有哪个 OS/linux 版本?
  • 我有 Linux Mint
  • 共享对象是.so,静态是.a。你有 liboptimization.a 吗?
  • @FranklinWalker 我在 google 中找不到 liboptimization 这是系统自带的库吗?你自己编译的吗?

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


【解决方案1】:

来自documentation

-static

在支持动态链接的系统上,这会阻止与共享库的链接。在其他系统上,此选项没有 影响。 (...)

这意味着您可能没有安装库的静态版本。您应该检查/usr/lib/usr/local/lib。动态库以.so 结尾,而静态库以.a 结尾。

【讨论】:

    【解决方案2】:

    编辑: 有时 g++ 或 gcc 编译器的选项顺序很重要(我的意思是,我的链接库已经遇到这种问题了),那么我认为你应该按其他顺序尝试,像这样:

    g++ -static -std=c++11 main.cpp -loptimization
    

    g++ -static -loptimization -std=c++11 main.cpp
    

    【讨论】:

    • 我得到 /usr/bin/ld: 找不到 -loptimization collect2: error: ld returned 1 exit status
    • 我认为你没有 lib 优化尝试 sudo apt-get install libx11-dev 并更改 #include
    • 虽然欢迎使用此代码 sn-p,并且可能会提供一些帮助,但它会是 greatly improved if it included an explanation of 如何解决这个问题。没有这个,你的回答就没有多少教育价值了——记住你是在为未来的读者回答这个问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。
    • 哦,是的,很抱歉……我要编辑我的答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2016-07-08
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多