armbian 和 debian 系统,在这些情景,有这些 C++的编译问题... - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
qazwsxkevin

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

  •  
  •   qazwsxkevin Sep 20, 2024 2684 views
    This topic created in 586 days ago, the information mentioned may be changed or developed.
    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 来调试代码的话?
    11 replies    2024-09-24 16:37:43 +08:00
    fcyxp
        1
    fcyxp  
       Sep 20, 2024   1
    默认你提到的 debian 指的是 x86 架构的 debian
    1.不行,架构不同无法运行。
    2.如果是 arm 的话,可以搜索 linaro 。
    kita
        2
    kita  
       Sep 20, 2024   1
    你没有 sysroot 拿 linaro 的编译有什么用,看看 debian 的 cross compiling guide
    Ayahuasec
        4
    Ayahuasec  
       Sep 20, 2024 via Android   2
    openwrt 那个,之前整过一个野路子:主机上把路由器固件的根分区解包出来,然后用 chroot 和 qemu-static 直接进入这个根分区,opkg 装 gcc ,源码放进去,编译需要的软件。最后把编译产物拷贝到路由器上,一般直接就能跑。

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

    缺点就是主机模拟其他架构的程序,跑编译很慢,只适合偶尔用。
    masterclock
        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 很容易用,还是交叉编译方便
    yinmin
        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 开发。
    openmynet
       
    openmynet  
       Sep 21, 2024   1
    找个支持交叉编译的 docker 镜像会比你瞎折腾要来得简单些。之前就用这做过 rust+cpp 在 arm32/64 的编译
    qazwsxkevin
        8
    qazwsxkevin  
    OP
       Sep 21, 2024
    谢谢各位,明白了,大概好像在 github 上看到有 mips32 交叉编译环境 docker 镜像了,有时间就搞下来试试
    iceheart
        9
    iceheart  
       Sep 21, 2024 via Android   1
    armbiam 上安装 gcc 编译也可以啊。
    flynaj
        10
    flynaj  
       Sep 22, 2024 via Android   1
    openwrt 下载那个 toolchain 更 SDK 就行,要什么平台切换到相关目录就行。还有可以考虑 golang 这种跨平台的语言
    kero991
        11
    kero991  
       Sep 24, 2024
    交叉编译的核心是工具链和 sysroot
    工具链就是 gcc 这些,sysroot 就是一个目标架构(比如 arm64 )的根目录

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

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

    就我天天编译各种开源 项目的经验来说,我宁可本地,不到万不得已,绝不交叉编译
    当然我有单位的国产电脑(飞腾,arm64 ),我也有 oracle 的 arm 小鸡
    About     Help     Advertise     Blog     API     FAQ     Solana     3106 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 14:19 PVG 22:19 LAX 07:19 JFK 10:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86