V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
SharkIng
V2EX  ›  问与答

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

  •  
  •   SharkIng · 2016-02-02 09:48:04 +08:00 · 4547 次点击
    这是一个创建于 3009 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一个某人用 Linux 系统 Compile 的 C 程序代码
    (
    1 ,不知道具体 Linux 的版本和内核
    2 ,无法得到源代码
    )

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

    感觉是某些内核或者什么版本不同的原因造成的,那么这种问题有办法解决没??
    ( Mac OS X 版本 10.10.5; GCC 是 XCODE 的)
    第 1 条附言  ·  2016-02-03 02:44:37 +08:00
    那么这种错误有没有可能会在写的时候也出现?就是说即使是 C 写的时候我把源码在 Mac 上写好发到 Linux 上然后在 Linux 上 Compile ,也会出错么??

    很简单的程序而已。
    13 条回复    2016-12-23 16:56:01 +08:00
    wohenyingyu01
        1
    wohenyingyu01  
       2016-02-02 09:55:38 +08:00   ❤️ 1
    compiler ?一个 linux 一个 unix ,怎么不放 windows 上再试试……
    hahastudio
        2
    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
        3
    aisk  
       2016-02-02 11:10:29 +08:00
    OSX 是 MachO 格式, Linux 是 ELF 格式。
    SharkIng
        4
    SharkIng  
    OP
       2016-02-02 11:17:23 +08:00
    @hahastudio
    @aisk
    所以唯一办法就是开个 Linux 的虚拟机了??


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

    碰到这种情况如果我手头没 Linux 的话也可以放 VPS 上面试试。
    tenfar
        12
    tenfar  
       2016-02-02 16:43:48 +08:00
    @codefalling 绝对不是 bash 。我现在忘记是什么程序了。
    tenfar
        13
    tenfar  
       2016-12-23 16:56:01 +08:00
    @codefalling http://blog.opticaldelusion.org/search/label/sbf_flash 突然看到这个帖子,想起来了找到给你看看。:)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1006 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:19 · PVG 03:19 · LAX 12:19 · JFK 15:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.