armbian 和 debian 系统,在这些情景,有这些 C++的编译问题...

96 天前
 qazwsxkevin
  1. debian 上 gcc 编译后的可执行文件,可否在 armbian 系统下运行?
  2. armbian 平台的性能弱(机顶盒),虽说也能在上面装个 gcc 编译 cpp ,来回修改几次代码和编译,就很麻烦了。
    如果要在 win11+VScode ,或 Dev-Cpp 等 IDE ,使用类似 MinGW/MinGW64 的编译器
    这种 armbian 的交叉编译器,去哪里找?怎么部署在 windows 环境下?
  3. 如果不是 armbian ,其它类似 openwrt ,(MIPS 24Kc)的平台呢? 这种交叉编译器,去哪里找?
    虽然在 debian 上能安装 openwrt sdk ,里面是有个编译器,似乎是可以使用它进行交叉编译,这种情形,只有这种办法吗?
    如果只有 windows 来调试代码的话?
1720 次点击
所在节点    程序员
11 条回复
fcyxp
96 天前
默认你提到的 debian 指的是 x86 架构的 debian
1.不行,架构不同无法运行。
2.如果是 arm 的话,可以搜索 linaro 。
kita
96 天前
你没有 sysroot 拿 linaro 的编译有什么用,看看 debian 的 cross compiling guide
aminobody
96 天前
Ayahuasec
96 天前
openwrt 那个,之前整过一个野路子:主机上把路由器固件的根分区解包出来,然后用 chroot 和 qemu-static 直接进入这个根分区,opkg 装 gcc ,源码放进去,编译需要的软件。最后把编译产物拷贝到路由器上,一般直接就能跑。

这个操作的优点是不用折腾交叉编译环境,有的时候折腾交叉编译环境都要搞一天,或者有些固件不太好找配套的编译环境。

缺点就是主机模拟其他架构的程序,跑编译很慢,只适合偶尔用。
masterclock
96 天前
1. debian 是 x86 ?在 armbian 上有可能可以运行,比如安装了 qemu binfmt deng
2. 找 armbian 的 rootfs 什么的,用 docker 在 x86 的机器上跑起来,在 docker 里开发
3. mips 24kc 大概只能交叉编译,或者 qemu + mips gcc +chroot 了,openwrt 的 sdk 很容易用,还是交叉编译方便
yinmin
96 天前
armbian 有 2 个版本,基于 debian 或基于 ubuntu 。如果你使用 debian 版本的 armbian ,本质上就是标准的 debian 系统加一些 armbian 的工具和脚本。armbian 支持 arm cpu 和 x64 cpu ,可以交叉编译。

windows 下使用 vscode remote ssh 到 linux 上开发、编译、调试。最佳实践也许是买一个高性能 8 核 armbian 设备(小几百元)用于远程 ssh 开发。
openmynet
96 天前
找个支持交叉编译的 docker 镜像会比你瞎折腾要来得简单些。之前就用这做过 rust+cpp 在 arm32/64 的编译
qazwsxkevin
95 天前
谢谢各位,明白了,大概好像在 github 上看到有 mips32 交叉编译环境 docker 镜像了,有时间就搞下来试试
iceheart
95 天前
armbiam 上安装 gcc 编译也可以啊。
flynaj
95 天前
openwrt 下载那个 toolchain 更 SDK 就行,要什么平台切换到相关目录就行。还有可以考虑 golang 这种跨平台的语言
kero991
92 天前
交叉编译的核心是工具链和 sysroot
工具链就是 gcc 这些,sysroot 就是一个目标架构(比如 arm64 )的根目录

工具链的坑在于,如果你单一编译,问题不大,比如你只编译 gcc 。
如果你什么项目都想试试,那你得配多少工具链?就算是 c ,用 clang 的,用 nanja 的也各不相同
sysroot 的问题更多,因为你编译任何项目,它都是有依赖的
你在本地系统只需要 apt install 或者 yum 就能安装一个依赖
你在交叉编译的 sysroot 里要配置依赖项,可是很麻烦很麻烦的。搞不好,要先从头编译

最后的最后,你需要测试环境,打包是不是完整,是不是少了什么库文件?

就我天天编译各种开源 项目的经验来说,我宁可本地,不到万不得已,绝不交叉编译
当然我有单位的国产电脑(飞腾,arm64 ),我也有 oracle 的 arm 小鸡

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1074420

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX