欢迎,来自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 是用于保存扩展的软件包信息的目录,独立于 Open­Wrt 源码之外,所以需要单独进行拉取和更新。而管理 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 软件包的编译。至于其它软件包,也可以用类似命令进行编译。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注