V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
stancaohua
V2EX  ›  程序员

OSX 生成 Linux 可执行文件

  •  
  •   stancaohua · Jan 20, 2020 · 5608 views
    This topic created in 2300 days ago, the information mentioned may be changed or developed.

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

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

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

    最好的方式是 docker
    seakingii
        22
    seakingii  
       Jan 20, 2020 via Android
    虚拟机最适合你
    secondwtq
        23
    secondwtq  
       Jan 20, 2020
    你编译好了 Linux 文件直接交上去么?没个 Linux 环境测试怎么知道能不能用
    pmx1990
        24
    pmx1990  
       Jan 20, 2020
    你知道 docker 吗 /狗头
    xiri
        25
    xiri  
       Jan 20, 2020
    不就是交叉编译吗,不过建议你还是用 linux 写,方便测试,出了问题也好排查
    zhuangzhuang1988
        26
    zhuangzhuang1988  
       Jan 20, 2020
    上 linux, 先好好写 c, 算法.
    暂时不需要研究这些,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4021 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 04:17 · PVG 12:17 · LAX 21:17 · JFK 00:17
    ♥ Do have faith in what you're doing.