c++ - 复制的可执行文件是否会在没有库的情况下在新机器上运行

标签 c++ linker executable

如果我在安装了许多库(例如 Boost)的 linux 机器上编译 C++ 程序,然后将该可执行文件复制到没有这些库的新 linux 机器,可执行文件是否仍能正常运行?

最佳答案

这在很大程度上取决于特定的库。那里有三种库:

  • 仅 header 库 - 这些依赖项在编译时解析。
  • 静态库 - 这些依赖关系在链接时解析。
  • 共享(动态)库 - 这些依赖关系在运行时解决。

大多数 Boost 库都是 header-only :它们不需要单独编译的库二进制文件或链接时的特殊处理。其他库是静态的,即仅在构建时才需要它们进行链接。唯一必须在目标机器上可用的库是动态(共享)库;如果您没有动态库依赖项,复制可执行文件并设置适当的权限就可以了。

关于c++ - 复制的可执行文件是否会在没有库的情况下在新机器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14680207/

相关文章:

c++ - 检查 ostream 对象是 cout 还是 ofstream,c++

c++ - 锁定取消引用的互斥量是不好的行为吗?

c++ - 基于 CMake 的 CUDA 应用程序构建失败 - 没有文件传递给链接器

php - 使用 PHP 创建自解压可执行文件

c++ - 通过继承扩展 shared_ptr

c++ - 将 luac 字节码嵌入到 C/C++ 源文件中

c++ - gcc 链接器描述文件强制符号位于特定地址

c++ - .pro 文件中的 RPATH 不起作用

linux - 从 ELFkickers 编译 sstrip for Ubuntu10.04 : asm/elf. h 问题

macos - 将 Pygame 3.5 转换为可执行文件 - Mac