代码 > 使用musl代替gcc进行go语言的cgo编译

2022-07-29

最近在发布go代码的时候遇到一些问题

主要是集中在linux版本的gcc上的。

总的来说,gcc的问题有以下几点

1.协议问题,mit协议的代码静态编译gpl的库总觉得有点问题

2.libnss问题,由于gcc本身的特殊性,libnss不能静态编译进去,不然会有各种报错(比如dns解析时panic)

3.glibc版本不匹配问题。

所以换使用musl进行编译。

总体来说,musl提供了一个musl-gcc协议,总体更新跟着不多的文档还是很方便的。

就是各种dev包里一般提供的是glibc编译的版本,之间使用会报错

需要用aptitude source下载代码包

然后通过CC="musl=gcc" ./configure的方式手动编译,得到.a文件,再通过编译脚本以的LDFLAGS中 以-L指定进来。

其他没啥问题,接下去就要进行稳定性测试了。

点击登录