从Linux进行跨平台编译OS X的方法

18

是否有一个易于使用的工具链可以从Linux编译代码到Darwin(Mac的操作系统)?

例如,我想在Linux机器上编译libpcap(或tcpdump)并在我的MAC上运行。我已经遇到过osxcross,但它需要获取Xcode SDK等内容,有人以前尝试过吗?

谢谢。


4
根据我的Linux和OS X的经验,从Linux跨平台编译OS X并不容易。最好的方法可能是购买一台旧的二手Mac或Macbook并从它上面进行工作。还要注意有一个免费开源的GNUstep,试图提供Cocoa框架。 - jww
@jww 我已经创建了三个不同的共享库(Linux 32、64和Windows),所以我真的很希望能够创建第四个。 - maaartinus
如果没有Xcode SDK,您将无法完成它,因为您需要头文件。针对您正在尝试的内容,您最好使用跨构建镜像https://github.com/multiarch/crossbuild。 - fhossfel
+1 给 jww;不过,即使这可能不太合法(或者说是合法的吗?),你可能想在像 VirtualBox 这样的虚拟机上安装 Hackintosh。那样编译适用于 Mac 的程序就会容易很多。 - hidefromkgb
根据我的经验,最好的解决方案是避免使用osxcross,而是在Mac上使用homebrew。 - Phillip
显示剩余2条评论
1个回答

6

你应该试试 darling

Darling 是一个用于运行 OS X 应用程序的运行环境。

Darling 就像 Mac OS X 上的WINE。尽管它仍然是一个相对较小的项目,但你已经可以使用 darling 编译使用 Xcode 的应用程序了。

Darling [~]$ hdiutil attach Xcode_7.2.dmg
/Volumes/Xcode_7.2
Darling [~]$ cp -r /Volumes/Xcode_7.2/Xcode.app /Applications
Darling [~]$ export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
Darling [~]$ echo 'void main() { puts("Hello world"); }' > helloworld.c
Darling [~]$ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang helloworld.c -o helloworld
Darling [~]$ ./helloworld
Hello world

我不确定一个更复杂的程序能否正确编译并在Mac上运行,但值得一试。

或者,您可以在Linux中运行Virtualbox上的Mac OS X,然后将编译好的文件传输到目标机器。


Mac OS的许可协议(至少当前版本)禁止在非苹果硬件上运行,即使在技术上可能做到这一点也不行。 - Marnen Laibow-Koser
2
引用 https://www.darlinghq.org/ 上的常见问题解答: “它是否违反了苹果的最终用户许可协议? 不!我们仅直接使用作为完全自由软件发布的那些Darwin部分。” 我从这个声明中得出结论,Darling不会与许可协议冲突。但我不是律师。 - user2366975

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接