在大環境中用make編譯app時有時候會報下面的錯誤。
ninja: error: 'out/target/common/obj/java_LIBRARIES/widget_intermediates/classes-header.jar', needed by 'out/target/common/obj/APPS/Mms_intermediates/classes-full-debug.jar', missing and no known rule to make it
17:42:04 ninja failed with: exit status 1
從錯誤看,是找不到header包。但是單編widget這個包的時候,生成的又沒有這個header包,全編的時候才有,所以要把這個模塊的mk文件include到MMS模塊的mk文件中,重新編譯一下就有了。
用JD-JUI 把這個classes-header.jar打開看一下,發現這個文件包裡面只有各個類的函數聲明,沒有具體的實現,就類似C語言的.h文件,是在編譯java文件的時候同步生成的,可以查系統 的mk編譯文件。
在android 的external 目錄下有一個 Turbine 包,應該是生成jar的header文件的。
在 build/make/core/java.mk 裡面有header的生成,希望有時間仔細研究一下。
# Run jarjar before generate classes-header.jar if necessary. 274 ifneq ($( strip $( LOCAL_JARJAR_RULES )),) 275 $( full_classes_header_jarjar ): PRIVATE_JARJAR_RULES :=$( LOCAL_JARJAR_RULES ) 276 $( full_classes_header_jarjar ): $( full_classes_turbine_jar ) $( LOCAL_JARJAR_RULES ) | $( JARJAR ) 277 @ echo Header JarJar : $@ 278 $( hide ) $( JAVA )- jar $( JARJAR ) process $( PRIVATE_JARJAR_RULES )$< $@ 279 else 280 full_classes_header_jarjar :=$( full_classes_turbine_jar ) 281 endif 282
㈡ 編譯錯誤怎麼解決
如果使用C的編譯器,應該是能編譯通過 因為C編譯器如果沒有寫明函數的返回值的話默認的函數返回值是int 如果使用C++的編譯器就編譯不過了 因為C++比C更嚴格了,不允許默認的int返回值
㈢ fflua c++17編譯報錯
可能是出現語法錯誤。
C語言程序文件的編譯錯誤分為三類,分別是:語法錯誤:屬於在編譯過程中所用的語法發生錯誤,在編譯器編譯時就會自動報錯的。異常錯誤:又叫運行錯誤,即在編寫的程序在運行時會發生計算錯誤。邏輯錯誤:即你所編寫的程序沒有按照你的預想給出正確的答案。
㈣ Dev C++出現問題,編譯出錯:source file not compiled
Dev C++出現問題,編譯出錯因為設置錯誤造成的,解決方法如下:
1、先打開dev c++程序,然後我們新建一個文件。
㈤ 為什麼編譯時出現cannot find lz錯誤,怎麼解決
編譯時出現cannot find lz錯誤,是設置錯誤造成的,解決方法如下:
1、首先在使用angular-cli開發處唯薯滑理Base64,出現了編譯錯誤【error TS2304: Cannot find 】。