是否可以在 Mac OSX 上创建 Window 或 Linux 可用的本机库(DLL 和 SO)?
Is it possible to create a Window or a Linux usable native library (DLL and SO) on a Mac OSX?
我创建了一个具有本机组件的软件,因此需要创建特定于操作系统的共享库(.dylib
、.dll
和 .so
)。我有一个 Mac OSX 并且我已经创建了一个与 Mac OSX machines 兼容的软件版本。我需要发布与其他操作系统兼容的版本。我可以直接在我的 mac 终端上写下:
gcc -o c_prog.dll -shared c_prog.c
和
gcc -o libc_prog.so -shared c_prog.c
或者我是否必须在各自的操作系统上创建 .so
和 .dll
文件?
你的建议是不可能的。您的编译器可以为 "host triplet" 指定的一个特定目标平台创建代码,例如在我的 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 源代码自行编译您的交叉工具。
最后,我求助于使用 real Windows 虚拟机来构建我在 Linux 上开发的软件,因为 Windows。这要容易得多:)
我创建了一个具有本机组件的软件,因此需要创建特定于操作系统的共享库(.dylib
、.dll
和 .so
)。我有一个 Mac OSX 并且我已经创建了一个与 Mac OSX machines 兼容的软件版本。我需要发布与其他操作系统兼容的版本。我可以直接在我的 mac 终端上写下:
gcc -o c_prog.dll -shared c_prog.c
和
gcc -o libc_prog.so -shared c_prog.c
或者我是否必须在各自的操作系统上创建 .so
和 .dll
文件?
你的建议是不可能的。您的编译器可以为 "host triplet" 指定的一个特定目标平台创建代码,例如在我的 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 源代码自行编译您的交叉工具。
最后,我求助于使用 real Windows 虚拟机来构建我在 Linux 上开发的软件,因为 Windows。这要容易得多:)