在Linux

时间:2017-03-17 06:59:59

标签: c++ linux eclipse binaryfiles

我想通过以下设置分发使用Eclipse ++ IDE创建的C ++二进制文件:

Cross GCC Compiler: gcc -std=c++17 
Cross G++ Compiler: g++ -std=c++17
Tool Chain settings:
Cross GCC Compiler
Cross G++ Compiler
Cross GCC Linker
Cross G++ Linker
Cross GCC Archiver
Cross GCC Assembler

我正在使用boost::serilization进行编译并在Linker中进行连接。二进制文件在Ubuntu 16.04上创建。我试图在Ubuntu 14.04上运行二进制文件,它会给出错误:

  
    加载共享库时出现

错误:libboost_serialization.so.1.58.0:无法打开共享对象文件:没有这样的文件或目录。

  

我还使用

在系统上安装了libboost
sudo apt-get install libboost-program-options-dev

但是,它给了我同样的错误。

我认为使用上述Eclipse IDE设置,它应该适用于大多数Linux platforms。我推测其在大多数Linux平台上的工作是错误的吗?

1 个答案:

答案 0 :(得分:2)

构建程序时,将其与特定版本的共享库链接。在较旧版本的例如Ubuntu那些较新版本的库不存在。

如果要在不同系统之间复制可执行文件,则需要链接静态。这意味着所有库都将链接到可执行文件中,因此它不依赖于共享库。它当然会使可执行文件更大。