【问题标题】:Is it possible to create a Window or a Linux usable native library (DLL and SO) on a Mac OSX?是否可以在 Mac OSX 上创建 Window 或 Linux 可用的本机库(DLL 和 SO)?
【发布时间】:2015-07-06 20:10:40
【问题描述】:

我创建了一个具有本机组件的软件,因此需要创建特定于操作系统的共享库(.dylib.dll.so)。我有一台 Mac OSX,并且我已经创建了一个与 Mac OSX 机器兼容的软件版本。我需要发布与其他操作系统兼容的版本。我可以简单地在我的mac终端上写:

gcc -o c_prog.dll -shared c_prog.c

gcc -o libc_prog.so -shared c_prog.c

或者我必须在各自的操作系统上创建.so.dll 文件吗?

【问题讨论】:

    标签: c macos gcc dll shared-libraries


    【解决方案1】:

    您的建议是不可能的。您的编译器可以为“主机三元组”指定的一个特定目标平台创建代码,例如在我的 linux 机器上:

    > gcc -dumpmachine
    x86_64-linux-gnu
    

    主机三元组的含义是$(machine)-$(vendor)-$(operatingsystem)

    GCC(可能还有其他一些编译器)可以构建为交叉编译器。这是一个编译器,其目标主机三元组与其运行的机器不同。对于我的系统(Debian Linux),有一个现成的 GCC 包用于编译 windows 64 位二进制文​​件:gcc-mingw-w64-x86-64。所以理论上,你可以在你的系统上构建一切。但不要忘记您需要目标平台的头文件、匹配的binutils(用于打包共享库之类的事情)以及目标平台的链接器和标准 C 库。所有这些统称为跨工具链

    现在您可以在 Mac 上寻找针对 Linux 和 Windows 的跨工具链。也许你会发现一些有用的东西。或者您也可以采用这种方式并尝试自己从 gcc、glibc 和 binutils 源代码编译您的交叉工具。

    最后,我求助于使用真正的 Windows 虚拟机来构建我在 Linux 上开发的适用于 Windows 的软件。这要容易得多:)

    【讨论】:

      猜你喜欢
      • 2013-10-20
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      相关资源
      最近更新 更多