【问题标题】:Mac OS X shared library cross platform developmentMac OS X 共享库跨平台开发
【发布时间】:2012-01-25 16:37:39
【问题描述】:

我应该承认我什至没有 Mac,我做过 Windows 和 Linux 编程。在这里,如果可能的话,我希望通过将 Mac OS X 与 Linux 联系起来来学习一些关于 Mac OS X 的知识。并希望能够在不购买 Mac 的情况下编译 Mac 共享库。

注意:绝对没有 GUI,所以不应该需要 Cocoa 对吧?还可以想象我现在使用 C 或 c++0x 和 POSIX。

Mac OS X 共享库和 Linux 有什么区别? 在 Mac 上运行 Linux .so 文件需要什么?我是否需要 Mac 原生替代 ld-linux.so 和 linux-gate.so 或其他一些与 crt 相关的目标文件?

在 Windows 或 Linux 上是否有适用于 Mac 的跨平台 gcc? (再次没有 GUI)

【问题讨论】:

标签: linux macos cross-platform shared-libraries


【解决方案1】:

即使您不需要 Cocoa/Objective-C,您仍然需要链接到 Mac OS X 库(如 libSystem,类似于 Linux 上的 libc)。文件格式完全不同(ELF 与 Mach-O),因此如果不重新编译,就无法让 Linux 库或工具在 Mac 上运行。

如果您坚持使用 POSIX/SUS API,您可以轻松编写内容,以便它们无需更改即可在 Linux 和 Mac 上编译,只要您不尝试任何特定于平台的操作,例如读取 Linux /proc 文件。

似乎不存在任何用于 Linux 到 Mac 开发的交叉编译器,我无法想象有人会尝试这样做:你会追逐一个移动的目标而没有任何真正的好处。

此类问题的解决方案一如既往:在 eBay 或类似拍卖平台上购买二手 MacMini。它们很便宜,就足够了。

【讨论】:

  • 感谢您的回答,请注意:我查看了 libSystem,显然它提供了 libc、libm 和其他一些库的功能,但仍然存在 libc、libm... 并且是符号链接到 libSystem。
  • 是的,这是为了兼容性。所以只需像在 Linux 上那样做-lm -lpthread,GCC/LLVM 会做正确的事情(tm)。
  • 如果您不需要 GUI 和 Objective-C,请将 Apple Darwin 安装到虚拟机中。 Apple Darwin 是 Apple 的开源操作系统,它是 Mac OS X 的基础。
猜你喜欢
  • 2013-11-11
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
相关资源
最近更新 更多