Mac OS 和 Linux 的 Compile 是不是不一样??有什么办法解决么?

2016-02-02 09:48:04 +08:00
 SharkIng
有一个某人用 Linux 系统 Compile 的 C 程序代码
(
1 ,不知道具体 Linux 的版本和内核
2 ,无法得到源代码
)

程序拿到的时候是不可执行文件,使用 chmod +x 修改成可执行文件之后,运行提示
zsh: exec format error: ./program

感觉是某些内核或者什么版本不同的原因造成的,那么这种问题有办法解决没??
( Mac OS X 版本 10.10.5; GCC 是 XCODE 的)
4570 次点击
所在节点    问与答
13 条回复
wohenyingyu01
2016-02-02 09:55:38 +08:00
compiler ?一个 linux 一个 unix ,怎么不放 windows 上再试试……
hahastudio
2016-02-02 10:00:33 +08:00
没辙吧,要有辙的话 Steam 上 OS X 能运行的游戏一般就都好移植到 Linux 上了= =

http://stackoverflow.com/questions/9439436/is-a-linux-executable-compatible-with-os-x
aisk
2016-02-02 11:10:29 +08:00
OSX 是 MachO 格式, Linux 是 ELF 格式。
SharkIng
2016-02-02 11:17:23 +08:00
@hahastudio
@aisk
所以唯一办法就是开个 Linux 的虚拟机了??


@wohenyingyu01
这有 Windows 什么事?至少 Linux 和 Unix 很多东西是互通的, 2 楼地址已经说明很清楚了,只是平时不写 C 不知道没接触过,没想到同样是 C 程序两边还无法使用。要说 Java ,你在 Linux/Unix , Mac , Windows 下写的不是都可以使用么?
aisk
2016-02-02 11:44:04 +08:00
@SharkIng 比较靠谱不折腾的方案就是虚拟机了。
tenfar
2016-02-02 11:54:42 +08:00
请先 file ./program 看一下到底是什么类型的文件咯。
hahastudio
2016-02-02 11:55:17 +08:00
@SharkIng 对的
如果你只是找到了一个 Linux 程序,想用在 OS X 上的话,也许你可以考虑找一个替代品
tenfar
2016-02-02 11:56:44 +08:00
还有理论上如果是静态编译,如果你够牛逼。是可以让一个程序既能在 linux 上跑也能在 osx 上跑的。貌似需要改文件结构。我也只遇到过一次,同一个可执行文件,同时能在 linux 上跑,也能在 osx 上跑的。 PS 不是虚拟机之类的。
ceyes
2016-02-02 15:23:42 +08:00
要折腾的话,关键字 “交叉编译+工具链” ……
xcodebuild
2016-02-02 16:22:57 +08:00
互通是源码级别的。。二进制码的话不比放到 windows 上简单。 @tenfar 你确定不是一个 bash shell ?-。-
secondwtq
2016-02-02 16:24:17 +08:00
错误信息已经告诉你是 exec format 不对了,不过这只是最表层的问题,其他的详细 https://en.wikipedia.org/wiki/Application_binary_interface

碰到这种情况如果我手头没 Linux 的话也可以放 VPS 上面试试。
tenfar
2016-02-02 16:43:48 +08:00
@codefalling 绝对不是 bash 。我现在忘记是什么程序了。
tenfar
2016-12-23 16:56:01 +08:00
@codefalling http://blog.opticaldelusion.org/search/label/sbf_flash 突然看到这个帖子,想起来了找到给你看看。:)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/254941

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX