This topic created in 612 days ago, the information mentioned may be changed or developed.
- debian 上 gcc 编译后的可执行文件,可否在 armbian 系统下运行?
- armbian 平台的性能弱(机顶盒),虽说也能在上面装个 gcc 编译 cpp ,来回修改几次代码和编译,就很麻烦了。
如果要在 win11+VScode ,或 Dev-Cpp 等 IDE ,使用类似 MinGW/MinGW64 的编译器
这种 armbian 的交叉编译器,去哪里找?怎么部署在 windows 环境下?
- 如果不是 armbian ,其它类似 openwrt ,(MIPS 24Kc)的平台呢? 这种交叉编译器,去哪里找?
虽然在 debian 上能安装 openwrt sdk ,里面是有个编译器,似乎是可以使用它进行交叉编译,这种情形,只有这种办法吗?
如果只有 windows 来调试代码的话?
11 replies • 2024-09-24 16:37:43 +08:00
 |
|
1
fcyxp Sep 20, 2024 1
默认你提到的 debian 指的是 x86 架构的 debian 1.不行,架构不同无法运行。 2.如果是 arm 的话,可以搜索 linaro 。
|
 |
|
2
kita Sep 20, 2024 1
你没有 sysroot 拿 linaro 的编译有什么用,看看 debian 的 cross compiling guide
|
 |
|
4
Ayahuasec Sep 20, 2024 via Android 2
openwrt 那个,之前整过一个野路子:主机上把路由器固件的根分区解包出来,然后用 chroot 和 qemu-static 直接进入这个根分区,opkg 装 gcc ,源码放进去,编译需要的软件。最后把编译产物拷贝到路由器上,一般直接就能跑。
这个操作的优点是不用折腾交叉编译环境,有的时候折腾交叉编译环境都要搞一天,或者有些固件不太好找配套的编译环境。
缺点就是主机模拟其他架构的程序,跑编译很慢,只适合偶尔用。
|
 |
|
5
masterclock Sep 20, 2024 1
1. debian 是 x86 ?在 armbian 上有可能可以运行,比如安装了 qemu binfmt deng 2. 找 armbian 的 rootfs 什么的,用 docker 在 x86 的机器上跑起来,在 docker 里开发 3. mips 24kc 大概只能交叉编译,或者 qemu + mips gcc +chroot 了,openwrt 的 sdk 很容易用,还是交叉编译方便
|
 |
|
6
yinmin Sep 21, 2024 via iPhone 1
armbian 有 2 个版本,基于 debian 或基于 ubuntu 。如果你使用 debian 版本的 armbian ,本质上就是标准的 debian 系统加一些 armbian 的工具和脚本。armbian 支持 arm cpu 和 x64 cpu ,可以交叉编译。
windows 下使用 vscode remote ssh 到 linux 上开发、编译、调试。最佳实践也许是买一个高性能 8 核 armbian 设备(小几百元)用于远程 ssh 开发。
|
 |
|
7
openmynet Sep 21, 2024 1
找个支持交叉编译的 docker 镜像会比你瞎折腾要来得简单些。之前就用这做过 rust+cpp 在 arm32/64 的编译
|
 |
|
8
qazwsxkevin Sep 21, 2024
谢谢各位,明白了,大概好像在 github 上看到有 mips32 交叉编译环境 docker 镜像了,有时间就搞下来试试
|
 |
|
9
iceheart Sep 21, 2024 via Android 1
armbiam 上安装 gcc 编译也可以啊。
|
 |
|
10
flynaj Sep 22, 2024 via Android 1
openwrt 下载那个 toolchain 更 SDK 就行,要什么平台切换到相关目录就行。还有可以考虑 golang 这种跨平台的语言
|
 |
|
11
kero991 Sep 24, 2024
交叉编译的核心是工具链和 sysroot 工具链就是 gcc 这些,sysroot 就是一个目标架构(比如 arm64 )的根目录
工具链的坑在于,如果你单一编译,问题不大,比如你只编译 gcc 。 如果你什么项目都想试试,那你得配多少工具链?就算是 c ,用 clang 的,用 nanja 的也各不相同 sysroot 的问题更多,因为你编译任何项目,它都是有依赖的 你在本地系统只需要 apt install 或者 yum 就能安装一个依赖 你在交叉编译的 sysroot 里要配置依赖项,可是很麻烦很麻烦的。搞不好,要先从头编译
最后的最后,你需要测试环境,打包是不是完整,是不是少了什么库文件?
就我天天编译各种开源 项目的经验来说,我宁可本地,不到万不得已,绝不交叉编译 当然我有单位的国产电脑(飞腾,arm64 ),我也有 oracle 的 arm 小鸡
|