V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
stancaohua
V2EX  ›  程序员

OSX 生成 Linux 可执行文件

  •  
  •   stancaohua · 2020-01-20 12:48:38 +08:00 · 4505 次点击
    这是一个创建于 1550 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人初学者,想问问在 macbook 下能编译生成目标平台为 Linux 的可执行文件( c 语言写的,clion 生成的)吗?我用 file 命令看到的是 Mach-O 格式的,好像不能直接在 Linux 系统下运行。

    还是说必须要在 Linux 系统下编译才能在 Linux 系统下执行?或者需要配置 clion 吗?

    26 条回复    2020-01-20 20:15:59 +08:00
    knowckx
        1
    knowckx  
       2020-01-20 12:49:53 +08:00   ❤️ 2
    来用 go 吧,交叉编译,你值得拥有
    ysc3839
        2
    ysc3839  
       2020-01-20 12:52:34 +08:00 via Android
    不一定要在 Linux 下编译,你这种情况叫做交叉编译,即在当前系统下编译另一平台 /系统的程序。
    不过如果不想折腾的话,我还是建议虚拟机安装 Linux 编译。
    hyq
        3
    hyq  
       2020-01-20 12:54:26 +08:00
    你需要交叉编译器,就可以编译出其他平台的二进制
    github.com/tpoechtrager/osxcross
    jinliming2
        4
    jinliming2  
       2020-01-20 12:54:44 +08:00 via iPhone
    交叉编译,不想折腾的话装个 Docker 在容器里编译就行……
    azh7138m
        5
    azh7138m  
       2020-01-20 12:54:53 +08:00
    能。
    不是。
    或许不用,就正常写 makefile (?
    ashong
        6
    ashong  
       2020-01-20 13:02:16 +08:00 via iPhone
    我用 go 编译生成运行没问题
    orvice
        7
    orvice  
       2020-01-20 13:06:31 +08:00
    docker
    stancaohua
        8
    stancaohua  
    OP
       2020-01-20 13:11:03 +08:00
    @ashong
    @knowckx 作业要求用 c 写。。
    @ysc3839
    @hyq
    @jinliming2 嗯嗯我去了解下交叉编译,我现在就是用 docker 重新搭了一套 cmake 用 makefile 编译的
    @azh7138m clion 自动生成的 makefile 好像没看到可以改目标平台的地方
    qieqie
        9
    qieqie  
       2020-01-20 13:14:15 +08:00
    @hyq 你这个反了,这个是 host linux, target macos 的 toolchain
    楼主既然用 clion,可以用 ide 支持的相关 remote build 功能: https://www.jetbrains.com/help/clion/remote-projects-support.html
    wizardoz
        10
    wizardoz  
       2020-01-20 13:18:44 +08:00
    clion remote build 或者 交叉编译
    Nasei
        11
    Nasei  
       2020-01-20 13:20:53 +08:00
    你要周围有 win10 的笔记本,可以用 wsl 编译
    clayyj1210
        12
    clayyj1210  
       2020-01-20 13:21:49 +08:00
    @ashong 不同平台上编译,一些底层依赖还是有点差异的。
    virusdefender
        13
    virusdefender  
       2020-01-20 13:42:49 +08:00
    交叉编译还是有些麻烦的,直接 docker 吧。
    ccpp132
        14
    ccpp132  
       2020-01-20 13:47:26 +08:00
    初学者建议要交 linux 就用 linux 写,别耍杂技
    hanai
        15
    hanai  
       2020-01-20 14:01:49 +08:00
    用 docker 最方便
    augustheart
        16
    augustheart  
       2020-01-20 14:11:57 +08:00
    安装相应平台的工具链,编译时候加上 arch,正常写就行了。
    augustheart
        17
    augustheart  
       2020-01-20 14:12:45 +08:00
    交叉编译不难,但是编译环境要折腾。
    Vegetable
        18
    Vegetable  
       2020-01-20 14:17:47 +08:00
    得不偿失,如果只是作业需要 linux,没必要非得交叉编译。如果作业是交叉编译...
    VDimos
        19
    VDimos  
       2020-01-20 14:20:36 +08:00 via Android
    可以,有几个方案:
    1.交叉编译,看语言有没有工具链可以用,大概率有的
    2. docker 中编译目标系统可执行文件
    3. 虚拟机,同 2
    4. 云服务器
    loading
        20
    loading  
       2020-01-20 14:23:14 +08:00 via Android   ❤️ 6
    别信楼上这些,乖乖先装个虚拟机 vbox 就挺好,把作业写完
    misaka19000
        21
    misaka19000  
       2020-01-20 14:57:20 +08:00
    交叉编译

    最好的方式是 docker
    seakingii
        22
    seakingii  
       2020-01-20 16:39:24 +08:00 via Android
    虚拟机最适合你
    secondwtq
        23
    secondwtq  
       2020-01-20 19:22:36 +08:00
    你编译好了 Linux 文件直接交上去么?没个 Linux 环境测试怎么知道能不能用
    pmx1990
        24
    pmx1990  
       2020-01-20 20:06:29 +08:00
    你知道 docker 吗 /狗头
    xiri
        25
    xiri  
       2020-01-20 20:13:06 +08:00
    不就是交叉编译吗,不过建议你还是用 linux 写,方便测试,出了问题也好排查
    zhuangzhuang1988
        26
    zhuangzhuang1988  
       2020-01-20 20:15:59 +08:00
    上 linux, 先好好写 c, 算法.
    暂时不需要研究这些,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5321 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 01:31 · PVG 09:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.