openwrtコンパイル体験【2021-01-28】
コンパイラ環境
Kubuntu 20.10 (理論的には他の Ubuntu ディストリビューションにも同じことが当てはまります) は、まずL の Openwrt Readme
を参照してインストールします。
ビルドエッセンゲスアスシドックビニューティルbzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs gcccore gcc-multib-gcc-multib gck-multilib gcccer fo libglib2。 0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g+±multilib antlr3 gperf wgetcurl swig rsync
これらのバッグ(一部のシステムには付属しています)
また、はしごを準備しておくと良いでしょう。
リポジトリをコンパイルする
openwrt の公式ソースコードを使用していますが、中国で速度が遅い場合は gitee を使用してクローンを高速化できます。
openwrt のソース コードを高速化するだけでなく、openwrt/feed.conf.defaults のウェアハウスも高速化する必要があるため、gitee 下のウェアハウス ディレクトリに変更するか、他の方法を使用して高速化することができます。
コンパイル設定
make menuconfig を使用して必要なパッケージを選択するだけです。L のプラグインの説明
を参照してください。さらに、生成された .config ファイルでは、2 つのユーザー パッケージ libustream-wolf と dnsmasq がエラーを報告するため、コメント アウトする必要があります。
コンパイルプロセス
- コンパイルツールをインストールする
sudo apt install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync -y
- openwrt リポジトリをダウンロードする
git アドレスは、独自の openwrt ウェアハウスに置き換えることができます。git clone https://git.openwrt.org/openwrt/openwrt.git/
- ウェアハウスに入り、必要なバージョンに切り替えます
cd openwrt git checkout remotes/origin/openwrt-19.07
- feeds.conf.defaults リポジトリを編集して高速化します
独自の高速リポジトリに置き換えられます。nano feeds.conf.default
- 次に、最初にフィードで更新します
./scripts/feeds update -a ./scripts/feeds install -a
- 設定ファイルを生成する
make menuconfig
- .config ファイルを変更する
これらの 2 行をコメントアウトしますnano .config
CONFIG_PACKAGE_libustream-wolfssl
CONFIG_PACKAGE_dnsmasq - 並列コンパイル中のエラーを防ぐには、最初に make download を実行してください。
ここでは多くのものがダウンロードされます。プロキシの使用をお勧めしますが、プロキシに問題があることに注意してください。つまり、pysocks がインストールされていない場合、pip は sock 経由で接続できません。make -j8 download V=s
- コンパイル
チュートリアルには、make download で並列コンパイル エラーを防ぐことができると書かれていますが、並列コンパイル中に正常にコンパイルできない不可解なパッケージがまだいくつかあります。相互依存関係があるはずです。コンパイルが長時間アイドル状態の場合は、次のようにコンパイルすることをお勧めします。単一のスレッド、それ以外の場合は複数回繰り返すことができます。make -j1 V=s