欢迎,来自IP地址为:3.142.97.186 的朋友
OpenWrt 官方提供了 SDK 编译工具,可以方便的进行系统固件和 ipk 软件包的生成。本文将详细讲解如何通过官方 SDK 工具编译生成 ipk 软件包。
1] 编译环境准备
OpenWrt 官方 显示基本编译环境要求,对于常用的 Linux 发行版,均可以达到要求。并且官方还提供了编译前需要准备的安装包。
对于 Debian / Ubuntu / Mint 体系:
$ sudo apt update $ sudo apt install build-essential clang flex bison g++ gawk \ gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev \ python3-setuptools rsync swig unzip zlib1g-dev file wget
对于Fedora / Nobara 系统:
$ sudo dnf --setopt install_weak_deps=False --skip-broken install \ bash-completion bzip2 file gcc gcc-c++ git-core make ncurses-devel patch \ rsync tar unzip wget which diffutils python3 perl-base \ perl-Data-Dumper perl-File-Compare perl-File-Copy perl-FindBin \ perl-IPC-Cmd perl-JSON-PP perl-lib perl-Thread-Queue perl-Time-Piece
对于 openSUSE 系统:
$ sudo zypper install --no-recommends asciidoc bash bc binutils bzip2 \ fastjar flex gawk gcc gcc-c++ gettext-tools git git-core intltool \ libopenssl-devel libxslt-tools make mercurial ncurses-devel patch \ perl-ExtUtils-MakeMaker python-devel rsync sdcc unzip util-linux \ wget zlib-devel
编译环境准备好后,还要给编译主机提供科学上网环境,否则会造成编译不成功。
同时,编译时不能使用 root 用户,需要以普通用户进行编译。
2] 部署 SDK 编译工具
选择 OpenWrt 的固件版本,并选择对应的 cpu 架构,就可以下载相应的软件工具了。例如 x86_64架构的最新版 OpenWrt 工具,下载地址为”https://downloads.openwrt.org/releases/24.10.0/targets/x86/64/”,页面内容如下:
下载页面分为上下两部分,其中”Image Files”是对应的固件,而”Supplementary Files”是支持文件。这些支持文件中就包含了 SDK 工具包。其中”openwrt-sdk-24.10.0-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst”是编译工具包。
切换到普通用户,使用如下命令下载并解压 SDK 工具包:
$ wget https://downloads.openwrt.org/releases/24.10.0/targets/x86/64/openwrt-sdk-24.10.0-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst $ apt-get install zstd $ tar -I zstd -xvf openwrt-sdk-24.10.0-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst $ cd openwrt-sdk-24.10.0-x86-64_gcc-13.3.0_musl.Linux-x86_64/
3] 编译软件包
查看目录中的内容,可以看到如下结构:
其中 feeds 是用于保存扩展的软件包信息的目录,独立于 OpenWrt 源码之外,所以需要单独进行拉取和更新。而管理 feeds 的配置文件就是 feeds.conf.default 文件,将自定义的软件包添加至该文件,就可以在之后的编译目录中看到这些软件包了。
例如想要把 passwall 和 passwall-packages 软件包添加到 feeds,命令如下:
$ echo "src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall-packages.git;main" >> "feeds.conf.default" $ echo "src-git passwall https://github.com/xiaorouji/openwrt-passwall.git;main" >> "feeds.conf.default"
添加完成后,就需要使用如下命令下载 feeds 源中的软件包源码(下载至 SDK 工具目录下执行):
$ ./scripts/feeds update -a
更新完成后,就可以使用如下命令定义软件包了:
$ make menuconfig
选择到指定的软件包,按空格键选择编译选项,<> 表示不编译;<*>表示编译到固件;<M>表示编译生成单独的 ipk 文件,如果仅想编译生成软件包,则在对应软件包前设置成 <M>即可。
选择完成后,选择 <Exit> 退出软件包设定。
设定完成后,就可以使用中下命令编译生成软件包了:
$ make package/ipt2socks/compile V=99
如果一切顺利,就会在 bin 目录生成对应的软件包:
至此,就完成了一个 ipk 软件包的编译。至于其它软件包,也可以用类似命令进行编译。