代码之家  ›  专栏  ›  技术社区  ›  MikeMB

如何在linux上打包c++依赖项

  •  3
  • MikeMB  · 技术社区  · 7 年前

    我正在使用cmake在Ubuntu 16.04上开发一个c++程序,用g++5和clang++-3.8编译。

    奖金问题:

    1 回复  |  直到 7 年前
        1
  •  1
  •   Yet Another John Smith    7 年前

    最糟糕的部分是一个不兼容的标准库。 无论如何,您必须静态链接它(请参阅您的答案的注释)。

    您只需像往常一样构建应用程序,然后将其与您需要的所有lib静态链接(请参阅编译器的文档)。因此,您可以获得完全没有依赖关系的可执行文件,它将在任何ABI兼容的系统上工作(您可能需要检查x86可执行文件是否在x86\u 64上工作)。

    您可以静态地链接所有可以链接的内容,也可以动态地链接其他内容。所以你分发了所有的动态LIB( *.so path/to/app/lib path/to/app/ 文件夹),因此您不依赖于系统库。创建您的 deb 将所有文件放入 /opt $HOME/appname "by hand"

    我对它了解不多,但我确切地知道它需要在目标系统上安装docker(不是您的选择)。

    有用的链接:

    g++ link options

    static linking manual

    Finding Dynamic or Shared Libraries