c++ - 如何用 dll 和库打包 C++

标签 c++ release

我想知道如何“打包”C++ 项目以供发布。它使用各种库,我不希望用户必须经历我所做的相同设置,将正确的文件放在正确的位置等。我很难研究这个,因为我不确定这个问题的技术术语。如果我在 Linux 上使用命令行编译,有没有一种简单的方法可以做到这一点?

最佳答案

您在 Windows 和 Linux 上的处理方式会有所不同,因为每个操作系统的处理方式都不同。我对 Linux 更熟悉,所以我将只回答 Linux 方面的问题。

当您使用 -l 标志将可执行文件与库链接时,链接器默认查找正常的系统库目录,因此这里有四种方法。

  1. 要求用户自行正确安装库。但是,听起来您不想那样做。

  2. 让用户将库位置添加到 LD_LIBRARY_PATH 变量。

  3. 您的第三个选项是使用 -rpath 标志强制链接器在特定路径中查找库。例如,要让应用程序在其工作目录中查找共享库,您可以使用以下命令进行编译:g++ -rpath ./-l SomeLib -o MyApp myapp.cpp

  4. 另一种选择是将您的代码与他们的库静态链接,这样您只需分发一个可执行文件。如果存在静态库,您可以使用 g++ -static -l SomeLib -o MyApp myapp.cpp 告诉 gcc 进行静态链接。

关于c++ - 如何用 dll 和库打包 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952174/

相关文章:

ios - EXC_BAD_ACCESS 发布中的简单代码

TFS 发布管理与最后的构建部署任务

visual-studio - 错误 : You are debugging a Release build of X. dll

c++ - 使用 FLANN 计算半径中的精确最近邻时出错

c++ - boost::asio 允许在连接处理程序阻塞时非阻塞地接受新连接

带嵌入式服务器的 C++ Web 框架?

c++ - C++ 检测惯用法在 Visual Studio 2015 Update 2 CTP 中未按预期工作

c++ - 运行时如何在 Visual Studio C++ 中确定调试或 Release模式

ios - 这段代码是否过度发布?

使用将在派生构造函数中构造的参数调用的 C++ 基本构造函数