3

如何创建一个 C++ 单一构建作业,该作业将生成在 Windows 上工作的 .dll 和准备在 Unix 上工作的 .so?

假设我们的开发环境是基于Windows的。

4

6 回答 6

2

在 Unix 或 Linux 上,您的共享库需要链接到系统库,例如/lib64/libc.so.6/lib64/ld-linux-x86-64.so.2. 如果这是您所要求的,则无法在 Windows 上链接这些(除非您在 Windows 上部署了 Linux 交叉编译工具链,如果存在的话)。您需要在目标操作系统上编译它。

于 2013-05-21T08:58:29.047 回答
1

我会给你一些简单的解决方案。请仅将其视为一个想法。我从来没有这样做过。但我认为从逻辑上讲这应该是可能的。

  1. 在 Windows 环境中开始您的工作。
  2. 您必须使用预处理器指令编写应该支持 windows 和 Unix 的代码。
  3. 创建两个支持 windows 和 Unix 的 make 文件(make_win、make_uni)。实际上,您也可以在单个 make 文件中执行此操作。
  4. 在windows环境下安装Oracle virtual box 。
  5. 在虚拟盒子上安装fedora-18 。
  6. 现在您可以同时通过 windows 和 Fedora 两个操作系统访问您的 make 文件(只需您可以使用两个操作系统访问同一个文件系统)。
  7. 使用 windows 运行 make_win 并使用 fedora 运行 make_uni。

注意:您可以选择在 Linux 环境下工作,并且可以在上面安装 virtual-box 和 windows top。

这些东西可以帮助你 http://geekery.amhill.net/2010/01/27/virtualbox-with-existing-windows-partition/ http://www.giannisakiris.com/index.php/2008/04/09 /virtualbox-access-windows-host-shared-folders-from-ubuntu-guest/

于 2013-05-21T05:26:51.427 回答
0

使用 minGW 并为 linux 和 windows 准备代码

http://www.mingw.org/

于 2013-05-14T09:44:09.857 回答
0

可能是 Cygwin 环境允许一些交叉编译技巧:Cygwin 的 Cross compile for linux

我自己没有对此进行测试,但可以想象一些构建过程,例如 MinGw 以构建 Windows .dll 和 Cygwin 以及用于 .so 的交叉编译工具......

结果可能是(取决于您的实际用例)只需使用 VM 在 Linux/Unix 系统上编译并共享用于编译的纯源代码(例如,使用 CMake + GCC + MinGw [仅适用于 Windows] 作为统一构建环境,甚至从 linux 系统交叉编译 Windows .dll)为您提供更好的服务。

于 2013-05-16T17:28:32.510 回答
0

是的,CMake 可以做到这一点:) 你需要培养编写体面的 cmake 规则的技能,但是当你掌握它时,你可以使用一个小的构建命令轻松地交叉构建。另外,我建议您将 Jenkins 与您的 CMake 一起使用,这可以与 CTest 和 CPack 链接,您将拥有一个很棒的开发地牢:)

于 2013-05-17T12:12:06.667 回答
0

必须对源代码进行返工。另外如果使用MinGW,我们可以最大限度地减少返工。但是如果我们使用微软编译器,返工更多,必须使用单独的make文件。

于 2013-05-21T04:51:01.520 回答