OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
› OpenWrt 官方网站
volvo007
V2EX  ›  OpenWrt

请教 openwrt 的编译问题

  •  
  •   volvo007 · May 10, 2024 via iPhone · 4924 views
    This topic created in 908 days ago, the information mentioned may be changed or developed.
    很久之前用过 openwrt ,时过境迁回来一看已经非常强大了。现在交叉编译也比原来容易很多

    就想问问大家一般自己编译一次 openwrt 大概要多久,我自己的台式 12600 在 Ubuntu 虚拟机里编译两个小时还报错……比较有挫败感,而且时间上也不允许天天搞几个小时去编译

    所以问问大家有没有一点套路,或者分享下一般的编译时间也好
    35 replies  •  2024-05-13 01:57:33 +08:00
    wuruxu
    wuruxu
    May 10, 2024❤️1
    1
    AMD Ryzen 7 PRO 4750U 编译半个小时吧,第一次会更慢点
    自己使用的设备,可以编译最新稳定的 branch
    cslive
    cslive
    May 10, 2024❤️1
    2
    wsl 编译 4 个小时
    CatCode
    CatCode
    May 10, 2024❤️1
    3
    我 3700X 也就 1 个多小时啊

    要开启全局的、稳定的科学上网,因为会从各种网站上下载包。网络好的话,make download 两三分钟就能完成,网络不好可能某个包几 kb 的速度下载,半个小时都完不成这一步。甚至直接报错。
    klarkzh
    klarkzh
    May 10, 2024 via iPhone❤️1
    4
    需要这么久么,是插件或是软件装的很多么?我也 12600k ,openwrt 装了 4 个插件,给小米编译固件,make download 完之后编译只要 15 分钟啊
    vcn8yjOogEL
    vcn8yjOogEL
    May 10, 2024❤️3
    5
    sdk 编译自己需要的包, 然后用 imagebuilder 生成固件
    能用官方编译好的二进制就不要自己编译
    ochatokori
    ochatokori
    May 10, 2024 via Android❤️1
    6
    没有开多线程或者是下载太难了?
    12600 不应该 2 个小时这么久
    YOOHUU
    YOOHUU
    May 10, 2024❤️1
    7
    菜鸡不会, 都是直接拿别人的在线编译 https://openwrt.ai
    ysc3839
    ysc3839
    May 10, 2024 via Android❤️1
    8
    建议编译前先用 make download -j16 下载代码,后面的 -j16 代表最多同时下载 16 个,可以根据网络情况调整。
    另外 12600 跑虚拟机的话可能要注意一下大小核问题,编译很久可能是跑在小核上了?
    0o0O0o0O0o
    0o0O0o0O0o
    May 10, 2024 via iPhone❤️1
    9
    网络问题吧?多看日志

    见我在这里的回复 https://v2ex.com/t/1030850

    我是写成了脚本,docker pull 对应 tag 的 docker imagebuilder 镜像,没有任何缓存全新编译,而且是三个同时的,然后自动上传和刷入,没统计过时间,大约半小时吧
    chenyx9
    chenyx9
    May 10, 2024 via Android
    10
    记得古早时候说第一次编译要-j1 ,不然容易出错
    mohumohu
    mohumohu
    May 10, 2024❤️1
    11
    直接白嫖 GitHub Action 编译,不用自己挂几个小时。
    yyzh
    yyzh
    May 10, 2024❤️1
    12
    @chenyx9 现在也有.全新编译有时候会出现某个软件先开始编译但是里面有依赖另外一个还没开始编译的内容.然后就挂了.
    adoal
    adoal
    May 10, 2024❤️2
    13
    @vcn8yjOogEL 对的,除非要改内核开启不支持的特性或者树外设备,否则没必要自己编译。
    GoldenLeez
    GoldenLeez
    May 10, 2024❤️1
    14
    在本地执行 make menuconfig 配置完之后,拿到配置文件直接白嫖 github action ,一个多小时就编译完了,省时间还省电费
    volvo007
    volvo007
    OP
    May 10, 2024 via iPhone
    15
    @CatCode 现在想想我编译的几次,应该都是某些库下载太久。下次挂全局梯子看看。
    volvo007
    volvo007
    OP
    May 10, 2024 via iPhone
    16
    @klarkzh 我试试用默认配置编译了看看,然后慢慢加插件。虽然我也不觉得自己开了很多个(也许开了几个特别耗时的)
    volvo007
    volvo007
    OP
    May 10, 2024 via iPhone
    17
    @adoal 作为小白,其实主要还是不知深浅,不知道哪些需要编译,哪些可以后面 opkg 安装。我挺想在路由器上搞个 docker 的,这块可能就是安装方便?
    adoal
    adoal
    May 10, 2024❤️1
    18
    @volvo007 如果只是要安装应用程序包,不自己 patch 内核的话,你可以用 image builder 自己做一个预先打包了你想要安装的包的 image 拿来刷机,不需要编译
    icegaze
    icegaze
    May 10, 2024 via Android
    19
    必须是白嫖 git 的在线 action ,很快的。
    0o0O0o0O0o
    0o0O0o0O0o
    May 10, 2024
    20
    @adoal #18 看了你说的我才意识到 image builder 并没有编译源码,用了都一两年了才意识到,汗颜
    Puteulanus
    Puteulanus
    May 10, 2024❤️1
    21
    之前在 Paperspace 白嫖过 280 核的 IPU 机器编译,记得十多分钟就能跑完
    现在不给用了,非常怀念
    Puteulanus
    Puteulanus
    May 10, 2024❤️1
    22
    我之前用过的另一家 upcloud 的,他们的 flexible plan 可以单独把 CPU 拉得很高,价格我算能接受吧(每次编译应该不到 1 小时我记得,但太久了记忆有点模糊了),主要国外服务器网也快。走我邀请好像能有一些试用金: https://upcloud.com/signup/?promo=FD389Q

    kokutou
    kokutou
    May 10, 2024❤️1
    23
    7800x3d 顺序编译的,
    差不多是半小时-40 分钟吧
    WhatTheBridgeSay
    WhatTheBridgeSay
    May 10, 2024❤️1
    24
    你用 Linux 发行版会自编译吗?不会的话你用 OpenWrt 也不应该自编译,自编译后软件源涉及内核版本依赖的包全都用不了,等于是费力不讨好。某些大神主导的这股自编译风气不好
    jianzhao123
    jianzhao123
    May 10, 2024 via iPhone
    25
    @WhatTheBridgeSay 确实啊,内核的那个 md5 还是啥值对不上,还得改
    chenyx9
    chenyx9
    May 10, 2024 via Android
    26
    @adoal 我是为了改 wireless-regdb 这个包,顺手编译固件
    kokutou
    kokutou
    May 10, 2024❤️1
    27
    @WhatTheBridgeSay #24
    主要是路由器复位后不用装软件包了...
    官方版本一复位全都要重装...

    我自己编译也只用基本的几个包其他的不用
    ruidoBlanco
    ruidoBlanco
    May 11, 2024❤️1
    28
    @kokutou luci-app-attendedsysupgrade 你值得拥有。直接在 luci 里找官方给按当前硬件和装的包给现编一个。

    &t=1034s
    ruidoBlanco
    ruidoBlanco
    May 11, 2024
    29
    @ruidoBlanco 链接被截断了,自己跳到 1034 秒
    flynaj
    flynaj
    May 11, 2024 via Android❤️1
    30
    大部分情况 image builder 就够了,不需要编译代码。除非你要改内核这类的,
    volvo007
    volvo007
    OP
    May 11, 2024 via iPhone
    31
    @adoal 原来还有这种操作,我去搜搜关键词。感觉这样能省很多事情
    kokutou
    kokutou
    May 11, 2024 via Android
    32
    @adoal
    我用 image builder 做的包无法开机。。。r3gv1 上面
    axiauk
    axiauk
    May 12, 2024❤️1
    33
    半个小时左右,第一次编译 100%编译成功的的关键是 1 ,使用新建 openwrt 用户,2 ,执行 export FORCE_UNSAFE_CONFIGURE=1 ,3 编译前 make download ,4 ,编译前全默认只选架构( Libraries 选项中的 libustream-openssl libustream-wolfssl 二选一,两个都被依赖上必出错)。
    axiauk
    axiauk
    May 12, 2024
    34
    玩玩体验一下无所谓,实际上编译没一点好处。
    稳定版升级和正确使用姿势是:导出配置,导出已安装包名。
    1 ,导出已安装包名,升级恢复后 opkg install 粘贴下面所有包
    opkg list-installed | awk '{print $1}' | sed ':M;N;$!bM;s#\n# #g'
    2 ,恢复配置。
    QeMPdEW178ZNV025
    QeMPdEW178ZNV025
    May 13, 2024❤️1
    35
    @kokutou 升级重装软件包那是过去式了
    OpenWrt 和 ImmortalWrt 的官方 Selector 网站上都可以自己定制带软件包的官方固件,几分钟就能定制好,不需要自己编译,路由器复位后插件都在

    或者你可以先安装官方固件,然后安装好软件包,每次用系统自带的值守式系统更新功能跟随官方升级固件,会自动编译带对应软件包的固件进行升级,变相相当于保留了软件包,升级一次过后再复位插件也能保留

    除非是刚需某些不在官方目录里的插件以及调整固件空间大小,否则根本没必要自己折腾编译
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1339 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 20:25 · PVG 04:25 · LAX 12:25 · JFK 15:25
    ♥ Do have faith in what you're doing.