本人初学者,想问问在 macbook 下能编译生成目标平台为 Linux 的可执行文件( c 语言写的,clion 生成的)吗?我用 file 命令看到的是 Mach-O 格式的,好像不能直接在 Linux 系统下运行。
还是说必须要在 Linux 系统下编译才能在 Linux 系统下执行?或者需要配置 clion 吗?
![]() | 1 knowckx 2020-01-20 12:49:53 +08:00 ![]() 来用 go 吧,交叉编译,你值得拥有 |
![]() | 2 ysc3839 2020-01-20 12:52:34 +08:00 via Android 不一定要在 Linux 下编译,你这种情况叫做交叉编译,即在当前系统下编译另一平台 /系统的程序。 不过如果不想折腾的话,我还是建议虚拟机安装 Linux 编译。 |
![]() | 3 hyq 2020-01-20 12:54:26 +08:00 你需要交叉编译器,就可以编译出其他平台的二进制 github.com/tpoechtrager/osxcross |
4 jinliming2 2020-01-20 12:54:44 +08:00 via iPhone 交叉编译,不想折腾的话装个 Docker 在容器里编译就行…… |
5 azh7138m 2020-01-20 12:54:53 +08:00 能。 不是。 或许不用,就正常写 makefile (? |
![]() | 6 ashong 2020-01-20 13:02:16 +08:00 via iPhone 我用 go 编译生成运行没问题 |
![]() | 7 orvice 2020-01-20 13:06:31 +08:00 docker |
8 stancaohua OP |
![]() | 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 |
![]() | 10 wizardoz 2020-01-20 13:18:44 +08:00 clion remote build 或者 交叉编译 |
![]() | 11 Nasei 2020-01-20 13:20:53 +08:00 你要周围有 win10 的笔记本,可以用 wsl 编译 |
12 clayyj1210 2020-01-20 13:21:49 +08:00 @ashong 不同平台上编译,一些底层依赖还是有点差异的。 |
![]() | 13 virusdefender 2020-01-20 13:42:49 +08:00 交叉编译还是有些麻烦的,直接 docker 吧。 |
14 ccpp132 2020-01-20 13:47:26 +08:00 初学者建议要交 linux 就用 linux 写,别耍杂技 |
![]() | 15 hanai 2020-01-20 14:01:49 +08:00 用 docker 最方便 |
16 augustheart 2020-01-20 14:11:57 +08:00 安装相应平台的工具链,编译时候加上 arch,正常写就行了。 |
17 augustheart 2020-01-20 14:12:45 +08:00 交叉编译不难,但是编译环境要折腾。 |
![]() | 18 Vegetable 2020-01-20 14:17:47 +08:00 得不偿失,如果只是作业需要 linux,没必要非得交叉编译。如果作业是交叉编译... |
19 VDimos 2020-01-20 14:20:36 +08:00 via Android 可以,有几个方案: 1.交叉编译,看语言有没有工具链可以用,大概率有的 2. docker 中编译目标系统可执行文件 3. 虚拟机,同 2 4. 云服务器 |
![]() | 20 loading 2020-01-20 14:23:14 +08:00 via Android ![]() 别信楼上这些,乖乖先装个虚拟机 vbox 就挺好,把作业写完 |
![]() | 21 misaka19000 2020-01-20 14:57:20 +08:00 交叉编译 最好的方式是 docker |
22 seakingii 2020-01-20 16:39:24 +08:00 via Android 虚拟机最适合你 |
![]() | 23 secondwtq 2020-01-20 19:22:36 +08:00 你编译好了 Linux 文件直接交上去么?没个 Linux 环境测试怎么知道能不能用 |
![]() | 24 pmx1990 2020-01-20 20:06:29 +08:00 你知道 docker 吗 /狗头 |
![]() | 25 xiri 2020-01-20 20:13:06 +08:00 不就是交叉编译吗,不过建议你还是用 linux 写,方便测试,出了问题也好排查 |
![]() | 26 zhuangzhuang1988 2020-01-20 20:15:59 +08:00 上 linux, 先好好写 c, 算法. 暂时不需要研究这些, |