c++ - 在 Linux 上分发 C++ 二进制文件

标签 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 上运行二进制文件,但出现错误:

error while loading shared libraries: libboost_serialization.so.1.58.0: cannot open shared object file: No such file or directory.

我还使用

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

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

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

最佳答案

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

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

关于c++ - 在 Linux 上分发 C++ 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42851134/

相关文章:

c++ - Delphi 中的动态数组和内存管理

c++ - POCO : How to properly attach StreamSocket to SecureStreamSocket?

c++ - 使用 Rcpp 函数后 R Studio 崩溃

android - 在android项目中使用第三方库

c++ - 如何在后台窗口中移动鼠标?

php - 如何仅为本地脚本打开 PHP 的 register_globals?

c++ - 如何使用 Linux API for C 确定文件系统类型(名称)?

php - PHP中如何获取系统命令执行的响应状态值

java - Maven 与 AspectJ - 例子?

java - 为什么 eclipse 不允许我输入 Scanner 内容?