我想通过以下设置分发使用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
平台上的工作是错误的吗?
答案 0 :(得分:2)
构建程序时,将其与特定版本的共享库链接。在较旧版本的例如Ubuntu那些较新版本的库不存在。
如果要在不同系统之间复制可执行文件,则需要链接静态。这意味着所有库都将链接到可执行文件中,因此它不依赖于共享库。它当然会使可执行文件更大。