错误现象

几周前,突然发现我的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. 提醒自己对待 “爱机” 像写程序一样细心。

mac上golang编译出现clang错误的更多相关文章

  1. mac 上python编译报错No module named MySQLdb

    mac 上python编译报错No module named MySQLdb You installed python You did brew install mysql You did expor ...

  2. mac上Navicat新建数据库3680错误解决办法

    mac上Navicat新建数据库3680错误解决办法 1.在设置里关闭mysql,若不能关闭,在终端输入: sudo /usr/local/mysql/support-files/mysql.serv ...

  3. [lua] mac上如何编译snapshot(检测Lua中的内存泄露)

    最近我们的unity手游频繁闪退,只要进入战斗场景,之后一段时间就会闪退,如果是在unity编辑器中则会报出not enough memory的错误!猜测应该是有内存泄漏: 由于我们使用了tolua, ...

  4. MAC上反编译android apk---apktool, dex2jar, jd-jui安装使用(含手动签名)

    前文 介绍了在Windows平台利用强大的APK-Multi-Tool进行反编译apk,修改smali源码后再回编译成apk的流程,最近受人之托,破解个apk,所幸的是所用到的这三个软件都是跨平台的, ...

  5. Mac上反编译Android apk安装包

    什么是反编译 我们知道,Android的程序打包后会生成一个APK文件,这个文件可以直接安装到任何Android手机上,因此,反编译就是对这个APK进行反编译.Android的反编译分成两个部分: 一 ...

  6. mac 上使用octave的plot错误的解决办法

    在mac10.10上使用octave的时候,键入 plot(x, y)的时候会出现如下错误: ^ line : unknown or ambiguous terminal type; type jus ...

  7. Mac上csv导入mysql提示错误[Error Code] 1290 - The MySQL server is running with the --secure-file-priv option解决办法

    1.进入mysql查看secure_file_prive的值 $mysql -u root -p mysql>SHOW VARIABLES LIKE "secure_file_priv ...

  8. 在Windows上使用CodeLite+MinGW+Clang进行开发

    前几天听说clang 3.4已经release了,然后我又手痒就折腾一下,在这里记录一下折腾的经过. 在以前就试过clang-cl+VC的开发环境,编译代码到是没发现什么大问题,有不少警告而已,不过c ...

  9. TiDB之mac上搭建及调试技巧

    此文目的 由于本人最近已经成为TiDB的粉丝,所以就开始各种研究TiDB的源码,研究源码这个事情,首先就需要在自己电脑上不断的调试及修改.TiDB本身的代码是非常容易编译和调试的,但是要把PD.TiK ...

随机推荐

  1. #leetcode刷题之路13-罗马数字转整数

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M.字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写 ...

  2. MySQL学习之视图的使用

    视图基本操作 创建视图 视图的本质就是SQL指令(select语句) 基本语法:create view 视图名 as  select 指令; 在这里的select指令可以是单表数据,也可以是连接查询. ...

  3. Centos6_32位系统512M内存_如何安装gogs_Mysql_配置开机自启动

    因为有很多人的Linux版本比较低,内存配置也较低,X86 ,32位系统的:所以这里推荐采用二进制安装gogs,并且使用Mysql:这个是傻瓜式的安装方案,适合绝大多数人(提及了centos7的安装思 ...

  4. js新开窗口避免浏览器拦截解决方案

    Ajax回调函数中,打开新窗口解决方案 var w = window.open(); $.post("GetHomToTestPaper", {homeworkName:homew ...

  5. 06 day小数据池

    1.小数据池,id() 小数据池针对的是: int ,str,bool-----都是不可变的数据类型  a.int 类型 a = 1000 b = 1000 print(id(a), id(b))   ...

  6. 谁能笑到最后,约瑟夫环-Josephus问题求解

     一. 简述Josephus问题 N个人站成一环,从1号开始,用刀将环中后面一个人“消灭“”掉,之后再将刀递给下一个人,这样依次处理,最后留下一个幸存者. 二. 求解方法  1.  约瑟夫问题如果使用 ...

  7. Python3爬虫(十五) 代理

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.设置代理 1.urllib #HTTP代理类型 from urllib.error import URLErr ...

  8. Highchart 饼图联动

    感觉好久没有更新博客了,最近一直忙着毕业论文,紧接着就开始搭建数据库,实在抽不出时间写. 正好趁着做数据库,写一写关于Highchart里两个饼图之间的互动. 用到的数据比较大,我也懒得修饰了,涉及到 ...

  9. 使用JAX-WS(JWS)发布WebService(一)

    JAX-WS概述: 通过Main发布一个简单WebService: JAX-WS(Java API for XML Web Services)规范是一组XML web services的JAVA AP ...

  10. java 第七章 面向对象高级特性

    一.类的继承 (一)继承的含义 1.在Java中定义一个类时,让该类通过关键字extends继承一个已有的类,这就是类的继承(泛化). 2.被继承的类称为父类(超类,基类),新的类称为子类(派生类). ...