İnşa sistemi kullanımı
- Herşeyi ayrıcalıksız kullanıcı olarak yapın, root olmadan, sudo kullanmadan.
- İnşa dizininin tam yolunun boşluk içermediğinden emin olun.
Güncel OpenWrt kaynak ağacını (en azından 21.02 ve sonrası) etkileyen bir mesele var: Belirli sistemlerde OpenWrt imgesi oluşur, ama sistem başlangıcında asılı kalır. Bu meselenin etrafından dolaşmak için, lütfen git kaynak kodu “chekout” işleminden önce buradaki (ing) “workaround” başlıklı kısımdaki talimatları takip edin.
Bir inşa sistemi kurulumu sonrası tipik oluşturma adımları:
# Kaynakları indirip güncelle git clone https://git.openwrt.org/openwrt/openwrt.git cd openwrt git pull # Belli bir kod revizyonunu seç git branch -a git tag git checkout v21.02.3 # Besileri güncelleme ./scripts/feeds update -a ./scripts/feeds install -a # Bellenim imajını ve çekirdeği yapılandır make menuconfig make -j $(nproc) kernel_menuconfig # Bellenim imajını oluştur make -j $(nproc) defconfig download clean world
İnşa adımları aşağıda detaylı açıklanmışlardır.
Kaynakları indirmek
Takip eden komutu kullanarak Git deposunu klonla.
git clone https://git.openwrt.org/openwrt/openwrt.git [<buildroot>]
Olası meseleler:
-bash: git: command not found
- inşa sistemi kurulumunu doğrula.fatal: destination path 'openwrt' already exists and is not an empty directory.
- inşakokü dizinini taşı/adlandır.
Kaynakları güncellemek
Geliştirme dalındaki kaynaklar sık değişir. En son kaynaklarla çalışmanız önerilir.
git pull
Olası meseleler:
-bash: cd: openwrt: No such file or directory
- inşakökü dizinini doğrula.fatal: not a git repository (or any of the parent directories): .git
- çalışma dizinini klonlanmış inşakökü'ne değiştir.
Besileri güncelleme
Eskimiş oldukları durumda, besiler için son güncellemeleri çek.
./scripts/feeds update -a
İndirilmiş paketleri make menuconfig
içine kullanılabilir kıl.
./scripts/feeds install <package_name> ./scripts/feeds install -a
Olası meseleler:
-bash: ./scripts/feeds: No such file or directory
- çalışma dizinini klonlanmış inşaköküne değiştir.Can't exec "make": No such file or directory at ./scripts/feeds line 22. Unsupported version of make found: make Checking 'gcc'... failed. Checking 'working-gcc'... failed. Checking 'g++'... failed. Checking 'working-g++'... failed. Checking 'ncurses'... failed. Checking 'awk'... failed. Checking 'unzip'... failed. Checking 'bzip2'... failed. Checking 'wget'... failed. Checking 'python'... failed. Checking 'python3'... failed. Checking 'file'... failed.
- inşa sistemi kurulumunu doğrula.
Bir yerel besi yaratma
<inşakökü>
dizininizi, openwrt kaynaklarını github'dan git klonlama ile hazırlayın (örneğin kendi çatalınızdan).
- Bir dizin yaratın:
mkdir -p <inşakökü>/paketlerim/<kısım>/<kategori>/<paket_adi>
.
<paket_adi>
'nı kendi paketinizle değiştirin.
örn.mkdir -p paketlerim/net/network/rpcbind
.
Kısım ve kategoriMakefile
'da bulunabilirler. - Bir Makefile yazın veya başka bir paketten bir
Makefile
indirin, github'da örneklere bakabilirsiniz.
Makefile'ınızı düzenleyin ve gerekli dosyaları, kaynakları... ekleyin
Daha fazlası: Paketleri oluşturma & Kendi uygulamanızdan bir paket yaratma
feeds.conf.default
'a kendi özel besinizle bir satır ekleyin:
src-link paketlerim <insakoku>/paketlerim
<insakoku>
'nü klonlanmış openwrt kaynak diziniyle değiştirin örn.~/openwrt
Kendi özel besinizin olduğu satırı, diğerlerinden üstün kılmak için, onların yukarısına taşıyın.
- Şimdi çalıştırın:
./scripts/feeds update -a; ./scripts/feeds install <paket_adı>
Eğer bunu bir bağımlılığı çözümlemek için yapıyorsanız bir kez daha./scripts/feeds install <paket_adı>
çalıştırın ve bağımlılığın çözümlendiğini farketmelisiniz.
- Paketinizi derleyin.
Make menuconfig
menüsünde paketi seçin
make package/my_package/{clean,compile}
ile inşa edin
Daha fazlası: Tek bir paket derleme
Kod revizyonunu seçmek
Bu adım atlanabilir en uç seviye imajlar inşa etmek istiyorsunu.
Dal seçimi
Her dal sürüm versiyonu için temel kod içerir, örn. openwrt-18.06
, openwrt-19.07
, openwrt-21.02
, master
, ve tekil sürümler, örn. v18.06.2
, v19.07.3
, v21.02.0
.
Her dal, geliştirme dalından geriye aktarılan özenle seçilmiş onarımlar ve güncellemelerle kararlı kod içermesi için tasarlanmıştır.
Bir dalı kullanmak için, Git deposunu yukarıda açıklanan git clone
komutunu kullanarak klonlayın ve sonra git checkout
komutuyla dala geçin.
# Dalları listeleme git branch -a # OpenWrt ana dalını kullan git checkout master # OpenWrt 21.02 dalını kullan git checkout openwrt-21.02
Dal değiştirirken, make distclean
komutunu kullanarak kaynak ağacını iyice temizlemek önerilir.
Böylelikle kaynak ağacınızın önceki derleme çalışmalarından yapı parçaları veya yapılandırma dosyaları içermediğinden emin olursunuz.
Etiket seçimi
Resmi sürüm depolarından paketler yüklemek için uzun süreliğine belirli bir sürüm etiketi seçin. Select an individual release tag to install packages from the official release repositories for a long time.
# Etiketleri getirip listeleme git fetch -t git tag # OpenWrt 21.02.1 sürümünü kullanma git checkout v21.02.1
Özet seçimi
Belirli bir kod revisyonu özeti seçme ve tüm besileri aynı güne eşitleme.
REV_HASH="4c73c34ec4215deb690bf03faea2a0fe725476f0" git checkout ${REV_HASH} REV_BRANCH="$(git rev-parse --abbrev-ref HEAD)" # Tüm "src-git"'leri "src-git-full" olarak değiştirin: https://openwrt.org/tr/docs/guide-developer/feeds#feed_configuration sed -e "/^src-git\S*/s//src-git-full/" feeds.conf.default > feeds.conf ./scripts/feeds update -a # Bir döngü ile tüm feeds.conf satırlarını seçili revizyon özetlerini ayarlamak için düzenleyin sed -n -e "/^src-git\S*\s/{s///;s/\s.*$//p}" feeds.conf \ | while read -r FEED_ID do REV_DATE="$(git log -1 --format=%cd --date=iso8601-strict)" REV_HASH="$(git -C feeds/${FEED_ID} rev-list -n 1 --before=${REV_DATE} ${REV_BRANCH})" sed -i -e "/\s${FEED_ID}\s.*\.git$/s/$/^${REV_HASH}/" feeds.conf done ./scripts/feeds update -a ./scripts/feeds install -a
Resmi inşa yapılandırmasını kullanma
OpenWrt'yi varsayılan resmi imajlarla aynı paketleri barındıracak şekilde derleme:
Örneğin archer_c7 için derliyorsanız onun wiki sayfasında fabrika bellenim URL'ini bulabilirsiniz https://downloads.openwrt.org/releases/21.02.1/targets/ath79/generic/openwrt-21.02.1-ath79-generic-tplink_archer-c7-v2-squashfs-factory.bin
'ath79' Hedef'i(Target) söyler, 'generic' Althedefi(Subtarget), 'archer-c7-v2' size belirli cihaz için Hedef profili(Target profile) söyler.
Yapılandırmayı 'generic' althedefine kadarki herşeyi kaldırarak ve 'config.buildinfo' ekleyek indirin:
# OpenWrt 19.07 ve sonrası wget https://downloads.openwrt.org/releases/21.02.1/targets/ath79/generic/config.buildinfo -O .config # OpenWrt 18.06 ve öncesi wget https://downloads.openwrt.org/releases/18.06.0/targets/ramips/mt7621/config.seed -O .config
Bu yapılandırmayı kullanırken hedef ve althedef halihazırda seçiliyken hedef profil için seçili olmayacağından eğer sadece belirli bir cihaz için inşa etmek istiyorsanız bunu kendiniz uyarlamanız gerekecek.
İmaj yapılandırma
Menuconfig
inşa sistemi yapılandırma arayüzü hedef platform seçimini, derlenecek paketleri, bellenim dosyasına dahil edliecek paketleri, bazı çekirdek seçeneklerini, vs. ele alır.
İnşa sistemi yapılandırma arayüzünü takip eden komutu yazarak başlatın:
make menuconfig
Bu, varolan yapılandırmanızın bağımlılıklarını otomatik günceller, ve şimdi güncellenmiş imajlarınızı inşa etmeye devam edebilirsiniz.
Bir seçenekler listesi göreceksiniz. Bu liste aslında bir ağacın tepesi. Bil liste öğesi seçebilir, ve onun ağacına inebilirsiniz.
Ağaçta bir paket veya özellik aramak için, “/” tuşuna basabilir, ve bir metin için arama yapabilirsiniz. Bu size metnin ağaç içindeki konumlarını verecek.
Çoğu paket ve özellik için üç seçeneğiniz vardır:
y
, m
, n
şu şekilde temsil edilir:
- y'ye basmak <*> gömülü etiketini ayarlar
Bu paket derlenecek ve bellenim imajına dahil edilecektir. - m'ye basmak <M> paket etiketini ayarlar
Bu paket derlenecek ama bellenim imajına dahil edilmeyecektir, örn. bellenim imaj dosyasını cihaza çaktıktan sonra opkg ile yüklenmek üzere. - n'ye basmak < > hariç etiketini ayarlar
Kaynak kodu işlenmeyecek.
Yapılandırmanızı kaydettiğinizde, <inşakökü>/.config
dosyası yapılandırmanıza göre yaratılır.
menuconfig
'i açtığınızda inşa ayarlarını bu sırayla ayarlamaya gereksineceksiniz (aynı zamanda menuconfig
arayüzünde de bu sırayla gösterilir):
- Hedef sistem (benzer cihazlar genel kategorisi)
- Althedef (Hedef sistem altkategorisi, benzer cihazları gruplar)
- Hedef profil (her bir belirli cihaz)
- Paket seçimi
- İnşa sistemi ayarları
- Çekirdek modülleri
Önce cihazınızın Hedef sistemini seçin, sonra doğru Althedefi seçin, sonra cihazınızı desteklenen platformların Hedef profil listesinde bulabilirsiniz.
Örn. tl-wr841n Wi-Fi yönlendirici için hedefi seçip kaydetmek için:
- Hedef Sistem → Seç → Atheros AR7xxx/AR9xxx → Seç
- Althedef → Seç → Küçük flaşlı cihazlar → Seç
- Hedef Profil → Seç → TP-LINK TL-WR841N/ND v11 → Seç
- Çık → Evet
config diff dosyasını kullanarak yapılandırma
make menuconfig
yanında bir başka yapılandırma yolu bir yapılandırma fark dosyası kullanmaktır.
Bu dosya, geçerli yapılandırmayı varsayılan yapılandırmayla karşılaştırarak sadece farkları barındırır.
Bir yararı bu dosyayı kendi alt projenizde versiyonlandırarak kontrol edebilmenizdir.
Aynı zamanda kaynak güncellemelerinden de daha az etkilenir, çünkü sadece değişiklikleri barındırır.
diff dosyası oluşturma
Derleme yapılandırma değişikliklerini kaydedin.
# Değişiklikleri diffconfig'e yaz ./scripts/diffconfig.sh > diffconfig
Bellenim yapma süreci yapılandırma fark dosyası config.buildinfo
'yu otomatik yaratır, 18.06 ve öncesinde config.seed
adındaydı.
diff dosyası kullanımı
Bu değişiklikler bir config dosyasına temel oluşturur <inşakökü>/.config
.
make defconfig
çalıştırarak, bu değişiklikler tam yapılandırmaya genişletilecektir.
# Değişiklikleri .config'e yaz cp diffconfig .config # Tam yapılandırmaya genişlet make defconfig
Bu değişiklikler yapı dosyasının (<inşakökü>/.config
) sonuna da eklenebilir, make defconfig
çalıştırarak bu değişiklikler önceki yapılandırmanın üstüne geçer.
# Değişiklikleri .config'in sonuna ekle cat diffconfig >> .config # Değişiklikleri uygula make defconfig
Özel dosyalar
Bazı özel yapılandırma dosyaları katmak isterseniz, bunların konacağı doğru yer:
<inşakökü>/files/
Örneğin, diyelim özel /etc/config/firewall
veya özel bir etc/sysctl.conf
ile bir imaj istiyorsunuz, öyleyse bu dosyaları şu şekilde yaratın:
<inşakökü>/files/etc/config/firewall
<inşakökü>/files/etc/sysctl.conf
Örn. eğer sizdeki <inşakökü>
, ~/source
ise ve bazı dosyaların bellenim imajının /etc/config
dizinine copyalanmasını istiyorsanız, onları koyacağınız doğru yer ~/source/files/etc/config
olur.
Sadece gerekli özelleştirmeleri adım adım eklemek için uci-defaults kullanmanız şiddetle önerilir. Bu, versiyonlar arasında değişen, oto-oluşturulan ayarlarla catışmaları en aza intirmeye yardım eder.
Defconfig
make defconfig
bir varsayılan hedev cihaz ve inşa sistemi yapılandırması üretecektir, bağımlılıkların ve inşa ortamı ön gerekliliklerinin kontrolünü de kapsayarak.
Defconfig aynı zamanda .config
dosyasından eskimiş öğeleri kaldırır, örneğin varolmayan paketleri ve yapı ayarlarını.
Aynı zamanda bağımlılıkları da kontrol eder ve olası eksik gerekli bağımlılıkları ekleyecektir. Bu kisa bir .config tarifini (diffconfig çıktısı gibi, hatta daha da budanabilir) oluşturma sürecinde kullanılabilecek bir tam .config'e “genişletmek” için kullanılabilir.
Çekirdek yapılandırması (isteğe bağlı)
Bilin ki make kernel_menuconfig
komutunun yaptığı değişiklikler inşa ağacının çekirdek yapılandırma şablonlarındadır ve build_dir'ri temizlemek bu değişiklikleri geri almaz.
Ayrıca burada değişiklikler yaparsanız resmi depolardan kernel paketleri yükleyemezsiniz.
Normalde bunu yapmaya ihtiyacınız yokken, bunu yapabilirsiniz:
make kernel_menuconfig CONFIG_TARGET=subtarget
CONFIG_TARGET hangi yapılandırmayı düzenlemek istediğinizi seçmenizi sağlar, olası seçenekler: hedef, althedef, ordam.
Değişiklikler şununla gözden geçirilebilir ve geri alınabilirler:
git diff target/linux/ git checkout target/linux/
Kaynak yansıları
'İnşa sistemi ayarları' paket konumlarını değiştirmek için yerel paket kümesini ele almayı kolaylaştıran bazı etkili seçenekler içerir:
- Kaynak paketler için yerel yansı
- İndirme dizini
İlk seçeneğin durumunda, basitçe paket kaynak kodlarının sunulduğu HTTP veya FTP sunucusunun tam URL'ini girersiniz. İndirme dizini aynı yolla inşa sisteminde (veya ağda) bir yerel dizinin yolu olur. Eğer zifttoplarını sunan bir web/ftp sunucunuz varsa, inşa sistemi Makefile'lada anılan konum(lar)dan indirmeyi denemeden önce bu sunucuyu dener. Benzer şekilde eğer bir yerel 'indirme dizini' inşa sisteminde bulunan, belirtilmişse.
'Çekirdek modülleri' seçeneği belirli bir (standart olmayan) sürücülere ve benzerlerine ihtiyacınız varsa gereklidir - bunlar tipik olarak USB veya belirli ağ arayüzü sunucuları için olan modüller gibi şeyler olacaktır.
Kaynak kodları indirme ve çoklu çekirdek derlemesi
Son make(yap)'ten önce bir make dowload
komutu vermek en iyisidir, bu adım tüm bağımlılıklar için kaynak kodunu önden çeker, bu daha çok CPU çekirdeğiyle derlemenize olanak verir, örneğin make -j10
, 4 çekirdekli, 8 iş parçacıklı işlemci için harika çalışacaktır.
Eğer OpenWrt'yi çoklu çekirdekte derlemeyi denerseniz ve tüm bağımlılık paketleri için tüm kaynak kodları indirmez iseniz büyük olasılıkla inşa başarısız olacaktır.
make download
İmajları inşa etmek
Şimdi imaj(lar)ı inşa etmek için herşey hazır, ki bu bir tek komutla yapılır:
make
Bu aletdizisini derlemeli, kaynaları capraz-derlemeli, paketleri paketlemeli, ve çakılmaya hazır bir imaj oluşturmalı.
İnşa ipuçları
Ayrıca bakın: Derleyici optimizasyon ince ayarları(ingilizce)
make download
tüm bağımlılıklar için tüm kaynak kodu önden indirecek, bu çok çekirdekli derlemenin başarılmasını sağlayacaktır; bu olmadan muhtemelen başarısız olur.
make -j
N derlemeyi N'e kadar çekirdek veya donanımsal iş parçacıği kullanarak hızlandıracaktır, make-j9
8 çekirdeğin veya donanımsal iş parçacığının tamamını kullanır.
Önden indir ve imajı 4 CPU çekirdeğiyle derleme örneği:
make -j5 download world
''nproc'' komutu ile kullanılabilecek CPU sayısını edinebilirsiniz:
make -j $(nproc) download world
veya nproc+1
ile daha iyi bir makro:
make -j $(($(nproc)+1))
Arkaplanda derleme
Derlerken sisteminizi kullanmaya niyetliyseniz, inşa sürecinin sadece serbest girdi/çıktı ve işlemci kapasitesini kullanmasını şu şekilde sağlayabilirsiniz (4 çekirdekli, 8 iş parçacıklı CPU):
make download ionice -c 3 nice -n19 make -j9
Tekil paketler inşa etme
Yazılım geliştirirken ve paketlerken, sadece söz konusu paketi inşa edebilecek olmak işlevseldir, örneğin jsonpath
paketiyle:
make package/utils/jsonpath/compile V=s
Yeniden inşa etmek için:
make package/utils/jsonpath/{clean,compile} V=s
Paketin hangi beside yer aldığının önemi yoktur, bu sözdizimi yüklü her paket için çalışır.
İnşa hatalarını ayırt etme
Eğer bir nedenle inşa çökerse, hatayı farketmenin en kolay yolu şöyle yapmaktır:
make V=s 2>&1 | tee build.log | grep -i -E "^make.*(error|[12345]...Entering dir)" make V=s 2>&1 | tee build.log | grep -i '[^_-"a-z]error[^_-.a-z]' (may not work)
Eğer grep hata verirse, yerine fgrep kullanın.
Üstteki, inşa çıktısının tam ayrıntılı bir kopyasını ~/source/build.log
'a kaydeder (standart-çıktıyı standart-hata'ya aktararak) ve hataları (ve fazladan bazı 'error' ifadelerini) ekranda gösterir.
Başka bir örnek:
ionice -c 3 nice -n 20 make -j 2 V=s CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 | tee build.log
Bu da çift çekirdekli bir işlemcide sadece arkaplan kaynakları kullanarak derlerken, inşa çıktısının tam ayrıntılı bir kopyasını (standart-hata'yı standart-çıktı'ya aktararak) build.log
'a kaydeder.
Yukarıda tarif edildiği gibi tonlarca Make çıktısı boyunca ilerlemeye çalışmak zorunda kalmadan probleme odaklanmanın bir yolu da logs
dizininde ki karşılık gelen kayıtları kontrol etmektir.
Örneğin inşa make[3] -C package/kernel/mac80211 compile
ile çökerse, <inşakökü>/logs/package/kernel/mac80211
'e gidip orada bulunan compile.txt
'e bakın.
Bip uyarısı alma
İşlemcinize bağlı olarak süreç bir süre alacak, veya daha uzun bir süre. Eğer bir akustik uyarı isterseniz, şu yöntemi kullanabilirsiniz:
make ...; echo -e '\a'
İnşa hatalarını yoksay
Eğer herşeyi derliyorsanız (sadece çakılabilir imaj oluşturmak için paketleri değil), muhtemelen bazıları derleme hatalarıyla oluşmasa bile derlemeyi sürdürmek isteyeceksiniz. If you are building everything (not just the packages to make a flashable image), you will probably want to keep building all packages even if some have compile errors and won't be built.
# Derleme hatalarını yoksay IGNORE_ERRORS=1 make ... # Bellenim birleştirme aşaması dahil tüm hataları yoksay make -i ...
İmajların konumunu bulma
Başarılı bir inşa sonrası, yeni oluşmuş imaj(lar) yeni yaratılmış <inşakökü>/bin
dizini altında bulunabilir.
Derlenmiş dosyalar ek olarak hedef platform ve althedefe göre sınıflandırılırlar, örneğin bir ar71xx
cihaz için oluşturulmüş bir generic
bellenim <inşakökü>/bin/targets/ar71xx/generic
dizininde bulunur (ve paket dosyaları <inşakökü>/bin/packages/mips_24kc
altında).
Örneğin, eğer <inşakökü>
dizininiz ~/source
ise, ikilikleriniz ~/source/bin/targets/ar71xx/generic
ve ~source/bin/packages/mips_24kc
içindedirler.
Ayrıca bakın: Dizin yapısı
Temizlik
Ara sıra inşa ortamınızı temizlemeye ihtiyacınız olabilir.
Oluşturulan parçalar, aletzinciri, inşa araçları ve indirilmiş besi ve kaynaklar seçilip tezmizlenebilir.
Takip edem make
-hedef komutları bu iş için kullanışlıdır.
make clean
en sık gerek duyulan temizleme işlemidir.
> Cleaned components > v make argument v | Compiled binaries: firmware, kernel, packages | Toolchain (target-specific) | Build tools, tmp/ | Compiled config tools | .config | feeds, .ccache, downloaded source files |
---|---|---|---|---|---|---|
clean | x | |||||
targetclean | x | x | ||||
dirclean | x | x | x | x | ||
config-clean | x | |||||
distclean | x | x | x | x | x | x |
Clean
make clean
/bin
ve /build_dir
dizinlerinin içeriğini sil.
Bu, alet zincirini kaldırmaz, aynı zamanda .config
dosyanızda seçmiş olduğunuzdan başka mimariler/hedefleri temizlemekten sakınır.
İnşadan önce make clean
yapmak, önceki inşalardan eskimiş parçalar kalmadığından emin olmak için iyi bir pratiktir.
Bu her zaman gerekli olmayabilir, ama genel kural olarak inşa kalitesini sağlamaya yardım eder.
TargetClean
make targetclean
Bu make clean
'e ek olarak hedef-özgül alet zincirini de temizler. musl veya gcc gibi aletzinciri elemanları değiştiğinde gerekebilir.
Bir make clean
yapar ve /build_dir/toolchain*
ve /staging_dir/toolchain*
(= çapraz-derleme araçları) dizinlerini de siler.
Not: make targetclean
22.03'te kullanıma sunulmuştur ve önceki OpenWrt sürümlerinde bulunmaz.
Dirclean
make dirclean
Bu temel “tam temizlik” operasyonunuzdur. Tüm derlenmiş ikilik dosyalar, araçlar, aletzinciri, tmp/ vs.'yi temizler
/bin
, /build_dir
, /staging_dir
, /toolchain
(=çapraz-derleme araçları), /tmp
(örneğin paketlerle ilgili veri) ve /logs
dizinlerinin içeriğini siler.
Distclean
make distclean
Derlediğiniz veya yapılandırdığınız herşeyi yoketer, ve aynı zamanda tüm indirilmiş besi içeriğini ve paket kaynaklarını siler.
Diğer herşeye ek olarak, <inşakökü>/.config
inşa yapılandırmanızı siler.
Sadece inşa sistemini “fabrika ayarlarına sıfırlama”ya ihtiyacınız varsa kullanın!
Seçici temizlik
Bir süre sonra, o kadar çok nesneyi temizlemek istemeyebilirsiniz, o zaman aşağıdaki komutlardan bazılarını kullanabilirsiniz.
# Linux nesnelerini temizle make target/linux/clean # base-file paketi nesnelerini temizleme make package/base-files/clean # luci nesnelerini temizleme make package/luci/clean
Örnekler
Sorun giderme
- sıradışı çevresel değişkenlerden sakının.
- İlkin
make V=sc
biçiminde çalıştırarak veya çıktı kayıtlarını etkinleştirerek sorunla ilgili daha çok bilgi edinin. make
opsiyonlarıyla ilgili daha çok okuyun: İnşakökü Teknik referans.
İndirme sorunlarına bağlı kaynak kod dosyası eksiği
Önce make dosyasındaki URL yolunun sonunda fazladan bölü olup olmadığını kontrol edin, varsa bölüyü kaldırıp deneyin.
Olmazsa kaynak kodu elle indirip dl
dizinine koyarak deneyin.
Derleme hataları
Ana kaynağı ve tüm besileri güncelleştirmeyi deneyin, bununla birlikte diğer olası sorunlardan sakının. İlgili meseleleri hata takipçisinde kontrol edin, yoksa paketi, hedefi (CPU, imaj, vs.) ve kod revizyonunu (ana & paket) anarak sorunu raporlayın.
Bazı paketler eski bağımlılıklara takılı kalıp uygun şekilde güncellenmemiş ve derlenmemiş olabilir, ve bu durum derlemenin başlangıcında şuna benzer uyarılarla sonuçlanır:
WARNING: Makefile 'package/feeds/packages/openssh/Makefile' has a dependency on 'libfido2', which does not exist
İnşa ortamı hata veren paketi kaldırıp yeniden yükleyerek kurtarılabilir
$ ./scripts/feeds uninstall openssh Uninstalling package 'openssh' $ ./scripts/feeds install openssh Installing package 'openssh' from packages Installing package 'libfido2' from packages Installing package 'libcbor' from packages
WARNING: skipping <package> -- package not selected
make menuconfig
çalıştırın ve paketiniz için derlemeyi etkinleştirin.
Düzgün çalışması için <*>
veya <M>
ile işaretlenmiş olmalı
Cihazım için çakılabilir imajlar oluşturulmadı
Cihazınız için bir çakılabilir imaj oluşturmak üzere make
komutunu verdiğinizde, hem sysupgrade hem de factory imajları make config
veya make menuconfig
ile seçmiş olduğunuz tüm cihazlarla bağlantılı kartlar için oluşturulacaktır.
Eğer make
çalıştırmak seçmiş olduğunuz cihaz profilleriyle bağlantılı kartlarda biri (veya hepsi) için imaj(lar)ı oluşturmaz ise, olasılıkla çok fazla opsiyon veya paket seçtiniz/etkinleştirdiniz, ve imaj cihazınıza çakmak için fazla büyük oldu.