本人初学者,想问问在 macbook 下能编译生成目标平台为 Linux 的可执行文件( c 语言写的,clion 生成的)吗?我用 file 命令看到的是 Mach-O 格式的,好像不能直接在 Linux 系统下运行。
还是说必须要在 Linux 系统下编译才能在 Linux 系统下执行?或者需要配置 clion 吗?
1
knowckx 2020-01-20 12:49:53 +08:00 2
来用 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 6
别信楼上这些,乖乖先装个虚拟机 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, 算法.
暂时不需要研究这些, |