我想分发使用 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/