編譯icedTea-web報錯填坑之旅

_Git發表於2018-10-16

編譯環境windows cygwin64,gitlab上clone的程式碼不能編譯通過,而本地提交到gitlab的程式碼可以通過,報錯資訊指向automake-1.15

錯誤1

Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/${ <-- HERE ([^ \t=:+{}]+)}/ at /usr/bin/automake line 3936

分析與解決

此處是由於automake-1.15存在歷史bug,檢視github,改問題後續已經修復,因為是2016年左右的bug,現在最新版本automake已經是1.15.1,故不考慮從修改automake上解決

錯誤2

Makefile.am:1851: error: unterminated conditionals:WINDOWS_TRUE

分析與解決

經過查詢,發現報這樣的錯應該是巨集定義不匹配造成的,於是查詢makefile檔案,找到最後發現問題出現在make Makefile上 make --help 發現有選項-d 可以列印debug資訊 執行make -d Makefile,發現輸出資訊中有比對aclocal.m4 configure.ac Makefile.in等檔案新舊 其中Makefile.am acinclude.m4 configure.ac aclocal.m4必須比Makefile.in舊 configure.ac必須比aclocal.m4舊,如果前提檔案新的話,會導致後面的檔案重新生成 可以檢視這篇blog講述了aclocal.m4 makefile.in makefile.am configure之間的關係

錯誤3

git 上傳程式碼時候會轉換換行符

解決辦法

git config --global core.autocrlf false
git config --global core.filemode false
git config --global core.safecrlf true
複製程式碼

錯誤4

換行符\r導致編譯不起來

解決辦法

通過dos2unix命令進行轉換,cygwin64需要手動去安裝這個安裝包

相關文章