記錄android8.1編譯過程中的問題


問題:

OUT_DIR=out
============================================
[2/2] bootstrap out/soong/.minibootstrap/build.ninja.in
[1/1] out/soong/.bootstrap/bin/minibp out/soong/.bootstrap/build.ninja
[1/1] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
No need to regenerate ninja file
[100% 2/2] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
[ 50% 1/2] glob art
[ 0% 6/8284] //system/tools/aidl:libaidl-common lex aidl_language_l.ll [linux]
FAILED: out/soong/.intermediates/system/tools/aidl/libaidl-common/linux_x86_64_static/gen/lex/system/tools/aidl/aidl_language_l.cpp
prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/soong/.intermediates/system/tools/aidl/libaidl-common/linux_x86_64_static/gen/lex/system/tools/aidl/aidl_language_l.cpp system/tools/aidl/aidl_language_l.ll
flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)
[ 0% 13/8284] build out/target/product/d38_sdm450/obj/kernel/msm-3.18/usr
make: Entering directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
make[1]: Entering directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18/arch/arm64/Makefile:130: warning: overriding recipe for target 'vdso_prepare'
/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18/arch/arm64/Makefile:120: warning: ignoring old recipe for target 'vdso_prepare'
GEN ./Makefile

configuration written to .config

make[1]: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
make: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
make: Entering directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
make[1]: Entering directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18/arch/arm64/Makefile:130: warning: overriding recipe for target 'vdso_prepare'
/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18/arch/arm64/Makefile:120: warning: ignoring old recipe for target 'vdso_prepare'
CHK include/generated/uapi/linux/version.h
make[1]: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
make: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
ninja: build stopped: subcommand failed.
02:22:14 ninja failed with: exit status 1

failed to build some targets (53 seconds)

`

解決方法:
export LC_ALL=C

在很多的shell腳本中,我們經常會看見某一句命令的前面有一句“LC_ALL=C”

SAR_CMD="LC_ALL=C sar -u -b 1 5 | grep -i average "

這到底是什么意思?

LC_ALL=C 是為了去除所有本地化的設置,讓命令能正確執行

轉貼:https://blog.51cto.com/potato80s/1439058

`#

configuration written to .config

make[1]: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
make: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
make: Entering directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
make[1]: Entering directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18/arch/arm64/Makefile:130: warning: overriding recipe for target 'vdso_prepare'
/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18/arch/arm64/Makefile:120: warning: ignoring old recipe for target 'vdso_prepare'
CHK include/generated/uapi/linux/version.h
make[1]: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
make: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
ninja: build stopped: subcommand failed.
02:38:13 ninja failed with: exit status 1

failed to build some targets (02:09 (mm:ss))

`
解決:

configuration written to .config

make[1]: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
make: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
make: Entering directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
make[1]: Entering directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18/arch/arm64/Makefile:130: warning: overriding recipe for target 'vdso_prepare'
/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18/arch/arm64/Makefile:120: warning: ignoring old recipe for target 'vdso_prepare'
CHK include/generated/uapi/linux/version.h
make[1]: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
make: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
[ 0% 399/107486] host C++: libaapt <= frameworks/base/tools/aapt/ResourceTable.cpp
ninja: build stopped: subcommand failed.
02:14:36 ninja failed with: exit status 1

failed to build some targets (01:44 (mm:ss))


執行make mrproper, 會先執行make clean, 執行make distclean之前, 會先執行make mrproper。再回到make help的結果:make clean      刪除大多數的編譯生成文件, 但是會保留內核的配置文件.config, 還有足夠的編譯支持來建立擴展模塊make mrproper   刪除所有的編譯生成文件, 還有內核配置文件, 再加上各種備份文件make distclean  mrproper刪除的文件, 加上編輯備份文件和一些補丁文件。 其 實, 對於一個剛剛從kernel.org上下載的內核源碼包, 可以不用執行make clean/make mrproper/make distclean, 因為源碼包的狀態本身就是clean的。 另外, 就算編譯過內核之后, 需不需要clean一下,  個人覺得應該具體問題具體對待, 且看linuxsir上也有兄弟對這個問題有疑問:Q: 很多內核編譯的教程都說在make之前要先make mrproper,清除以前編譯的產物。但編譯器/鏈接器本身就會檢查文件的日期,並確定是否需要重新編譯/鏈接。如果清除了,很多以前已經編譯過的代碼 又得重新編譯。如果說這樣能節省硬盤空間的話,那只有那些先前編譯過而現在不再需要的模塊的空間被節省了,而代價則是編譯時間延長了。個人覺得得不償失, 至少不需要每次編譯都來一次make mrproper。 A:  我沒有make mrproper,每次修改內核配置后很快就能編譯完成,很方便,也沒發現什么問題如果make不能確定那些文件要重新編譯,那還要make做什 么個人觀點,盡信書則不如無書,實踐出真知,呵呵

看到 /home/xxx/Code/sm90/kernel/msm-4.4 is not clean, please run 'make mrproper'

回到根目錄下 make mrproper,還是抱上面的錯誤。折騰了一下午,才搞定。

最終解決:進到 kernel/msm-4.4/ 下面執行:

make mrproper

再回到根目錄,執行 make bootimage -j8 ,一切ok。

`make[1]: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
make: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
make: Entering directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
make[1]: Entering directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18/arch/arm64/Makefile:130: warning: overriding recipe for target 'vdso_prepare'
/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18/arch/arm64/Makefile:120: warning: ignoring old recipe for target 'vdso_prepare'
INSTALL block/test-iosched.ko
INSTALL crypto/ansi_cprng.ko
INSTALL drivers/char/rdbg.ko
INSTALL drivers/input/evbug.ko
INSTALL drivers/mmc/card/mmc_block_test.ko
INSTALL drivers/mmc/card/mmc_test.ko
INSTALL drivers/net/wireless/ath/wil6210/wil6210.ko
INSTALL drivers/scsi/ufs/ufs_test.ko
INSTALL drivers/spi/spidev.ko
INSTALL drivers/video/backlight/backlight.ko
INSTALL drivers/video/backlight/generic_bl.ko
INSTALL drivers/video/backlight/lcd.ko
INSTALL net/bridge/br_netfilter.ko
DEPMOD 3.18.71-perf
make[1]: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
make: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
[100% 5/5] Target boot image: out/target/product/d38_sdm450/boot.img
out/target/prod****uct/d38_sdm450/boot.img maxsize=68395008 blocksize=135168 total=28851496 reserve=811008

build completed successfully (01:16 (mm:ss))

`

make[1]: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18'
make: Leaving directory '/home/persist/disk2/skye-android/36AT/D38/kernel/msm-3.18'
ninja: build stopped: subcommand failed.
03:07:23 ninja failed with: exit status 1

failed to build some targets (02:33 (mm:ss))

skye@ubuntu:/home/persist/disk2/skye-android/36AT/D38$ cd /out/target/product/d38_sdm450/obj/kernel/msm-3.18
-bash: cd: /out/target/product/d38_sdm450/obj/kernel/msm-3.18: No such file or directory
skye@ubuntu:/home/persist/disk2/skye-android/36AT/D38$ cd out/target/product/d38_sdm450/obj
skye@ubuntu:/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj$ cd kernel/msm-3.18/
skye@ubuntu:/home/persist/disk2/skye-android/36AT/D38/out/target/product/d38_sdm450/obj/kernel/msm-3.18$ make mrproper
CLEAN .
CLEAN crypto/asymmetric_keys
CLEAN kernel/time
CLEAN kernel
CLEAN lib
CLEAN net/wireless
CLEAN security/selinux
CLEAN usr
CLEAN .tmp_versions
CLEAN scripts/basic
CLEAN scripts/dtc
CLEAN scripts/genksyms
CLEAN scripts/kconfig
CLEAN scripts/mod
CLEAN scripts/selinux/genheaders
CLEAN scripts/selinux/mdp
CLEAN scripts
CLEAN include/config usr/include include/generated arch/arm64/include/generated
CLEAN .config .version include/generated/uapi/linux/version.h Module.symvers signing_key.priv signing_key.x509 x509.genkey

build completed successfully (14 seconds)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM