Étapes et commandes de compilation OpenWrt en détail
Préface
Le processus de compilation d'OpenWrt est comme un répéteur.En plus de sélectionner les composants du système, presque chaque compilation consiste à copier et coller les mêmes commandes. Et comprendre le rôle de chaque commande et quand l'exécuter, afin que nous puissions mieux résoudre les problèmes rencontrés lors de la compilation et compiler le firmware plus facilement.
Compilez pour la première fois
-
Cloner le code source OpenWrt
git clone https://github.com/coolsnowwolf/lede openwrt
Prenons l'exemple du référentiel de code source de Lean, après tout, de nombreuses personnes l'utilisent. De plus la fin de la commande
openwrt
est cloner le code se réfère auopenwrt
répertoire, le but de la standardisation, car parfois pas compiler le code source. -
Entrez le répertoire source
cd openwrt
-
Téléchargez le code source du package dans la source des flux
./scripts/feeds update -a
Les flux sont des packages étendus, indépendants du code source OpenWrt, ils doivent donc être extraits et mis à jour séparément.
-
Installer des packages dans les flux
./scripts/feeds install -a
-
Ajuster les composants du système OpenWrt
make menuconfig
Il est recommandé de ne sélectionner que l'architecture pour la première compilation, et de laisser les autres tranquilles, afin que le taux de réussite de la compilation soit plus élevé. Si vous n'avez pas l'intention d'ajuster le composant, entrez-
make defconfig
le, il détectera l'environnement de compilation et générera un fichier de configuration de compilation par défaut. -
Pré-téléchargez les packages requis pour la compilation
make download -j8 V=s
-j8
Cela signifie télécharger en utilisant 8 threads. En théorie, plus le nombre est élevé, plus le téléchargement est rapide, mais il semble y avoir une limite supérieure. En fait, la vitesse de 5 threads ou plus n'est pas très différente. Dans le cas d'un bien réseau, le téléchargement peut être terminé en 5 minutes. -
Vérifier l'intégrité des fichiers
find dl -size -1024c -exec ls -l {} \;
Cette commande peut lister téléchargé un fichier incomplet (basé sur mon expérience avec plusieurs compilations dessinées moins de 1k fichier appartient au téléchargement incomplet), s'il existe un tel fichier peut utiliser la
find dl -size -1024c -exec rm -f {} \;
commande pour les supprimer, puis réexécuter lemake download
téléchargement et double- coché, Confirmer que tous les fichiers sont complets peut augmenter considérablement le taux de réussite de la compilation et éviter de perdre du temps. -
Commencer la compilation
make -j1 V=s
-j1
: Utilisez la compilation à un seul thread. Les novices recommandent la compilation à un seul thread, l'un est parce que les problèmes de métaphysique peuvent avoir un taux de réussite élevé, et l'autre est de vérifier facilement le journal des erreurs.V=s
: Sortie de journaux détaillés, utilisés pour trouver des erreurs lorsque la compilation échoue. De plus, le code plein écran peut être chargé lors de l'exécution, et cela prend quelques heures pour s'exécuter, et le chargement est plus durable.
Compilez à nouveau
-
Entrez le répertoire source (s'il ne se trouve pas dans ce répertoire)
cd openwrt
Mettre à jour
CONSEILS: Vous pouvez ignorer l'étape de mise à jour si vous recompilez à court terme.
-
Mettre à jour le progiciel système
sudo sh -c "apt update && apt upgrade -y"
La fonction principale est de mettre à jour les composants de compilation installés lors de la configuration de l'environnement de compilation
-
Tirer la mise à jour du code source OpenWrt
git pull
-
Mettre à jour le code source du package dans la source des flux
./scripts/feeds update -a
-
Installer des packages dans les flux
./scripts/feeds install -a
Nettoyage de fichiers
-
Nettoyer les anciens produits de compilation (facultatif)
make clean
Exécuter après une mise à jour à grande échelle du code source ou une mise à jour du noyau pour garantir la qualité de la compilation. Cela supprimera les fichiers
/bin
et/build_dir
dans le répertoire. -
Effacer les anciens produits de compilation, les outils de compilation croisée et les chaînes d'outils et autres répertoires (facultatif)
make dirclean
Il doit être exécuté avant la compilation de l'architecture de remplacement. Cela supprimera
/bin
et/build_dir
(fichiers de répertoiresmake clean
), ainsi que/staging_dir
,/toolchain
,/tmp
et les/logs
fichiers. -
Effacer les fichiers autres que le code source OpenWrt (facultatif)
make distclean
À moins que vous ne fassiez du développement et que vous envisagiez de pousser vers un référentiel distant comme GitHub, c'est presque inutile. Cette action est équivalente à la
make dirclean
suppression/dl
, aux/feeds
répertoires et aux.config
fichiers. -
Restaurer le code source OpenWrt à son état initial (facultatif)
git clean -xdf
Utilisez-le si le code source est cassé ou s'il n'a pas été compilé depuis longtemps.
-
Effacer les fichiers temporaires
rm -rf tmp
Supprimer effectuer
make menuconfig
certains fichiers temporaires générés après avoir récupéré des informations, y compris un certain nombre de packages, après la suppression rechargerapackage
le répertoire du package. S'il n'est pas supprimé, certains progiciels nouvellement ajoutés ne seront pas affichés. -
Supprimer le fichier de configuration de la compilation
rm -f .config
Si vous désélectionnez certains composants sans les supprimer, les composants dépendants ne seront pas automatiquement annulés, il est donc recommandé de les supprimer si vous devez ajuster les composants.
Compiler
-
Ajuster les composants du système OpenWrt
make menuconfig
Si vous n'avez pas l'intention d'ajuster le composant, entrez-
make defconfig
le, et il détectera l'environnement de compilation et ajustera automatiquement le fichier de configuration de compilation en fonction de la mise à jour. -
Pré-téléchargez les packages requis pour la compilation
make download -j8 V=s
-
Vérifier l'intégrité des fichiers
find dl -size -1024c -exec ls -l {} \;
Cette commande peut lister téléchargé un fichier incomplet (basé sur mon expérience avec plusieurs compilations dessinées moins de 1k fichier appartient au téléchargement incomplet), s'il existe un tel fichier peut utiliser la
find dl -size -1024c -exec rm -f {} \;
commande pour les supprimer, puis réexécuter lemake download
téléchargement et double- coché, Confirmer que tous les fichiers sont complets peut augmenter considérablement le taux de réussite de la compilation et éviter de perdre du temps. -
Commencer la compilation
make -j$(nproc) || make -j1 || make -j1 V=s
Après l'échec de la compilation multithread, il entrera automatiquement dans la compilation monothread. En cas d'échec, il affichera des journaux détaillés.