mac上golang編譯出現clang錯誤


錯誤現象

幾周前,突然發現我的go 項目編譯開始報一種以前從來沒有出現過的錯誤:

# runtime/cgo
clang: warning: argument unused during compilation: '-pthread'
# runtime/cgo
clang: error: no such file or directory: 'libgcc.a'

需要說明下:我的開發機器是mac mini,系統當時是10.8.5, 上周升級為mavericks。

問題進一步探索

剛出現時我有點慌,當然上了google,查出一大堆結果,答案五花八門,一一試過都不能解決,這下我慌了——畢竟go語言是一門新語言,而apple又是google的“死敵”! 我進一步發現,我用 go build -a 就會報這個錯誤,否則不報這個錯誤。這就有些蛋疼了: + 我修改了某個包 + 在引用了它的程序里會用它原來的包(在 $GOPATH/pkg/darwin_amd64/ 下),以前用go build -a 就可以保證是最新的(加上 -a 參數會對引用的包重新編譯),但現在會報錯,於是我只能手動刪除 $GOPATH/pkg/darwin_amd64/ (后來我寫了一個腳本),然后再編譯。

在寫了清包腳本和編譯腳本后,我就將這事暫時放下了。

問題加劇,不解決不行了

今天早上我需要編譯一個linux和Windows版本,於是就到 $GOROOT/src 下執行:

$ sudo CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash
$ sudo CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash

這兩個命令都報錯了,在編譯到runtime/cgo 時!問題也是clang 出錯。 更令我上火的是,我發現不論在什么情況下 go build 也報文章開頭的錯誤了,這下我只能又一次google。結果與三周前一樣一樣的。

問題回溯

我在舉手無措時,回想幾周前出現這個問題我的電腦裝了些什么東西呢?我想到那天進行了Xcode 5 的升級。一想到這,我就幾乎斷定就是xcode5 引起的了。因為xcode是用clang 進行編譯的。於是google : upgrade xcode 5 golang warning: argument unused during compilation: ' "-pthread" ,進入到 Mac XCode 5 build problem 看了下,里面提到重新安裝go 1.2rc3 就解決了。我依葫蘆畫瓢,下載golang1.2rc3 ,安裝,測試,終於正常了!

總結

寫這篇blog有兩個目的: 1. 我相信很多golanger 都會遇到這個問題,而golang 1.2rc3 才發布沒有多久,或許有些朋友還不知道,寫此文已做提醒。 2. 提醒自己對待 “愛機” 像寫程序一樣細心。


免責聲明!

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



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