我想知道如何“打包”C++ 项目以供发布。它使用各种库,我不希望用户必须经历我所做的相同设置,将正确的文件放在正确的位置等。我很难研究这个,因为我不确定这个问题的技术术语。如果我在 Linux 上使用命令行编译,有没有一种简单的方法可以做到这一点?
最佳答案
您在 Windows 和 Linux 上的处理方式会有所不同,因为每个操作系统的处理方式都不同。我对 Linux 更熟悉,所以我将只回答 Linux 方面的问题。
当您使用 -l 标志将可执行文件与库链接时,链接器默认查找正常的系统库目录,因此这里有四种方法。
要求用户自行正确安装库。但是,听起来您不想那样做。
让用户将库位置添加到 LD_LIBRARY_PATH 变量。
您的第三个选项是使用 -rpath 标志强制链接器在特定路径中查找库。例如,要让应用程序在其工作目录中查找共享库,您可以使用以下命令进行编译:
g++ -rpath ./-l SomeLib -o MyApp myapp.cpp
另一种选择是将您的代码与他们的库静态链接,这样您只需分发一个可执行文件。如果存在静态库,您可以使用
g++ -static -l SomeLib -o MyApp myapp.cpp
告诉 gcc 进行静态链接。
关于c++ - 如何用 dll 和库打包 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952174/