iconv-go升级过程中的编译问题
工作项目原因,需要对golang进行升级。升级之后老的iconv-go运行有问题。因为新的golang运行更加严格,所以需要升级iconv-go.
从djimenez/iconv-go 拉下来代码进行编译发现“找不到iconv库的一些接口”,目测是库没链进来。错误信息如下:
go install ./...
# github.com/djimenez/iconv-go
/tmp/go-build579267556/github.com/djimenez/iconv-go/_obj/converter.cgo2.o: In function `_cgo_5f3e10abf205_Cfunc_iconv_open':
src/github.com/djimenez/iconv-go/converter.go:: undefined reference to `libiconv_open'
/tmp/go-build579267556/github.com/djimenez/iconv-go/_obj/converter.cgo2.o: In function `_cgo_5f3e10abf205_Cfunc_iconv_close':
src/github.com/djimenez/iconv-go/converter.go:: undefined reference to `libiconv_close'
/tmp/go-build579267556/github.com/djimenez/iconv-go/_obj/converter.cgo2.o: In function `_cgo_5f3e10abf205_C2func_iconv_open':
src/github.com/djimenez/iconv-go/converter.go:: undefined reference to `libiconv_open'
/tmp/go-build579267556/github.com/djimenez/iconv-go/_obj/converter.cgo2.o: In function `_cgo_5f3e10abf205_C2func_iconv_close':
src/github.com/djimenez/iconv-go/converter.go:: undefined reference to `libiconv_close'
/tmp/go-build579267556/github.com/djimenez/iconv-go/_obj/converter.cgo2.o: In function `call_iconv':
src/github.com/djimenez/iconv-go/converter.go:: undefined reference to `libiconv'
collect2: ld returned exit status
很奇怪,本地明明有安装iconv,怎么就找不到iconv库?
iconv --version
iconv (GNU libiconv 1.14)
Copyright (C) - Free Software Foundation, Inc.
License GPLv3+: GNU GPL version or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Bruno Haible.
进到iconv-go的converter.go发现
package iconv /*
#cgo darwin LDFLAGS: -liconv
#cgo freebsd LDFLAGS: -liconv
#cgo windows LDFLAGS: -liconv
#include <stdlib.h>
#include <iconv.h> // As of GO 1.6 passing a pointer to Go pointer, will lead to panic
// Therofore we use this wrapper function, to avoid passing **char directly from go
size_t call_iconv(iconv_t ctx, char *in, size_t *size_in, char *out, size_t *size_out){
return iconv(ctx, &in, size_in, &out, size_out);
} */
我了个去,darwin,freebsd,windows都有。但是我在centos下使用的。难不成是这个原因,导致iconv库没有链进去?于是尝试进行了修改。
package iconv /*
#cgo darwin LDFLAGS: -liconv
#cgo freebsd LDFLAGS: -liconv
#cgo windows LDFLAGS: -liconv
#cgo LDFLAGS: -liconv
#include <stdlib.h>
#include <iconv.h> // As of GO 1.6 passing a pointer to Go pointer, will lead to panic
// Therofore we use this wrapper function, to avoid passing **char directly from go
size_t call_iconv(iconv_t ctx, char *in, size_t *size_in, char *out, size_t *size_out){
return iconv(ctx, &in, size_in, &out, size_out);
} */
再进行编译。奇迹般的通过了,通过了,通过了。。。
好吧,目前只是这样猥琐的解决的。这样写不知道会不会对跨平台造成影响。先这样解决吧。记录一下。
如果哪位同仁看到这篇文章,觉得不是这样解决的,请不吝赐教。
iconv-go升级过程中的编译问题的更多相关文章
- WDCP从php5.2升级到5.3的办法,以及升级过程中iconv错误的处理
从wdcp官方论坛我们可以找到一个询问升级的帖子,然后管理员在回复中也提供了升级方法: cd /tmp wget -c http://dl.wdlinux.cn:5180/soft/php-5.3.1 ...
- 在Linux下安装PHP过程中,编译时出现错误的解决办法
在Linux下安装PHP过程中,编译时出现configure: error: libjpeg.(a|so) not found 错误的解决办法 configure: error: libjpeg.(a ...
- VMware虚拟机升级过程中遇到的一点问题
在将VWware由9.0升级到10.0的过程中,出现如下图的错误: failed to create the requested registry key Key:Installer e ...
- 通过 yum update 将系统从CentOS 6.2 升级到 CentOS 6.6 及升级过程中的简单排错
本文说明 本文写于2014年的WP中,后WP停止维护,今天翻到此记录整理下,记录于此,方便日后查看. 话说那时候写博客真是认真啊~哈哈~ 升级前的系统信息 [root@thatsit ~]# unam ...
- Confluence 6 在升级过程中查看合并日志
为了监控升级的过程,你应该查看 application log 日志中的输出. 通常日志经常将会显示多个日志实例,这个实例是定义在日志的 INFO 级别的,通常格式如下: WikiToXhtmlMig ...
- android recovery升级过程中掉电处理
一般在升级过程,都会提示用户,请勿断电,不管是android的STB,TV还是PHONE,或者是其他的终端设备,升级过程,基本上都可以看到“正在升级,请勿断电”,然后有个进度条,显示升级的进度. 但是 ...
- node安装升级过程中遇到的问题汇总
一.Node already installed, it's just not linked 第一步:sudo chown -R $(whoami) $(brew --prefix)/* 第二步:br ...
- iOS 9 升级过程汇中白苹果 iPhone或iPad 解决方案
最近想必有很多朋友升级了iOS 9,不过有部分朋友在升级过程中遇到了白苹果问题.也就是卡在升级过程中,不限重启.这时,你只能通过dfu进行升级了. ios9怎么进入dfu模式: 1.将你的iPhone ...
- Linux下安装过程中编译PHP时报错:configure: error: libjpeg.(a|so) not found
在Linux下安装PHP过程中,编译时出现configure: error: libjpeg.(a|so) not found 错误的解决的方法: 检查之后发现已经安装libjpeg.可是/usr/l ...
随机推荐
- POI2015题解
POI2015题解 吐槽一下为什么POI2015开始就成了破烂波兰文题目名了啊... 咕了一道3748没写打表题没什么意思,还剩\(BZOJ\)上的\(14\)道题. [BZOJ3746][POI20 ...
- oracle之 关闭透明大页
方法一: 1.设置/etc/grub.conf文件,添加 transparent_hugepage=never ,在系统启动是禁用 [root@hbdw1 ~]# cat /etc/grub.conf ...
- MAC OX 配置 Tomcat 说明
1: 首先在官网下载 Tomcat(我选择的是最新的9.0) , http://tomcat.apache.org/ 2:下载完成之后将压缩包解压在/Library/下 可使用快捷键 control+ ...
- MySQL建表规范与常见问题 (go)
一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 建议使用InnoDB存储引擎. 存储精确 ...
- VHF、UHF的频率范围
1.VHF意思是甚高频,2.UHF意思是超高频,即ultra-high freqency ,电视搜台显示的是当前频率段名,最高不超过470M,因为带增补的高频头标准就是470M3.这是对讲机专业机的工 ...
- 设置pip镜像源
修改镜像源 vim ~/.pip/pip.conf windows 当前用户目录\pip\pip.ini 内容 [global] index-url=https://pypi.tuna.tsinghu ...
- 智能家居入门DIY——【三、GP2Y10之颗粒物传感器】
这个传感器接线算比较简单的,程序也不麻烦.不过这东西是颗粒物传感器吧,不是神马PM2.5(总悬浮颗粒物),不是神马PM10(可吸入颗粒物).插个螺丝刀进去度数也是变的,不是说的很清楚原理是反光嘛……… ...
- 1021 docker初识
docker与虚拟机相比,没有虚拟化内核,转而使用宿主机的内核.因此docker更轻更快 docker缺点:后端兼容性测试需求.把软件安装在不同的操作系统上进行测试,观察软件运行是否良好. 不能用do ...
- 关于ROS的MANGLE和ip route-rules-lookup的关系和区别
mangle打出来的mark routing的优先级和lookup打出来的优先级是一样的.(你可以这么理解,lookup根据目的地址打出来的标签,其实跟在ip firewall-mangle打出来的是 ...
- struts1的一个简单登陆功能
Login.jsp: <form action="<%= request.getContextPath() %>/login.do" method="p ...