在 MinGW 上編譯 Sqlite3 因為 CRLF 換行造成編譯失敗

Jack Yu
2 min readJan 24, 2020

--

記錄一個在工作上遇到的問題。

在 Windows 的 MinGW 裡面編譯 Sqlite3 的時候遇到了以下錯誤:

shell.c:2685:1: error: operator ‘||’ has no right operand

跑去看 code 發現是 define 原本不該斷行卻被斷行了 (下圖是模擬的,因為之後已經修好了 XDrz)

糾結了很久很久,最後發現是 CRLF 換行的問題。原來 Sqlite3 從官網下載的 source code 是使用 LF 換行,但因為我們把 code 放在 git 上面,在 checkout 的時候被自動轉換成 Windows style 的換行,也就是 CRLF,導致 Sqlite3 的 build script (autoconf) 不預期的轉出錯誤的檔案。

知道問題來源後,解決有問題的人就比較簡單了 (?),git 可以設定 commit/checkout 的時候是否要自動轉換 LF、CRLF ,下以下指令就可以囉。

git config --global core.autocrlf false

若想要對這個設定的行為更了解,請參考 git manual 或後面的 reference 文章囉。

Reference

--

--

Jack Yu
Jack Yu

No responses yet