原文链接: http://www.code-by.org/viewtopic.php?f=54&t=166

GNU页面
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

已有的环境:msys2.0, mingw, GnuWin32工具集

解压后先别急着configure
先看看 README.woe32

Building requires the mingw or cygwin development environment (includes gcc).
I recommend to use the cygwin environment as the development environment
and mingw only as the target (runtime, deployment) environment.
For this, you need to install

  • cygwin,
  • the mingw runtime package, also from the cygwin site.

首先安装cygwin,
进入目录后执行 ./configure , 第一个问题

checking if gcc supports -fno-rtti -fno-exceptions... ./configure: line 7594: diff:
command not found

缺个diff.exe,用everything 搜索到 C:\Program Files (x86)\GnuWin32\bin 下面有一个,复制到 C:\cygwin64\bin,
先不急着执行./configure,单独执行diff.exe 提示缺少 libintl3.dll,将这个文件也复制过来,
再次执行diff.exe 提示缺少 libiconv2.dll,再复制,没问题了。
(如果你从别的地方获取diff,可能不需要依赖dll,也可能依赖别的库,用类似的方法配置齐全就是了)

执行 ./configure 没有出现明显问题

执行 make ,提示

./relocatable.c: In function 'libcharset_relocate':
:0:12: error: expected expression before '/' token
./relocatable.c:423:37: note: in expansion of macro 'INSTALLDIR'
const char orig_installdir = INSTALLDIR;
^~~~~~~~~~
make[2]:
** [Makefile:65: relocatable.lo] Error 1
make[2]: Leaving directory 'C:/Users/ViANG/Desktop/libiconv-1.14/libcharset/lib'
make[1]: *** [Makefile:34: all] Error 2
make[1]: Leaving directory 'C:/Users/ViANG/Desktop/libiconv-1.14/libcharset'
make: *** [Makefile:42: lib/localcharset.h] Error 2

好像是说这个 INSTALLDIR 的宏里面,包含了不可预料的表达式(在/之前),但是我也不知道怎么看INSTALLDIR的值,
用grep -R "INSTALLDIR" * 看了一下

build-aux/install-reloc: -D"INSTALLPREFIX="$prefix"" -D"INSTALLDIR
="$installdir"" \
lib/Makefile:-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR="$(libdir)" -DNO
_XMALLOC \
lib/Makefile.in:-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR="$(libdir)" -
DNO_XMALLOC \

大概是从某个参数中传递进去的,既然它的内容有毒,而且只有一处,那自己改写试试:
找到:libiconv-1.14\libcharset\lib\relocatable.c


const char orig_installdir = INSTALLDIR;
改为
const char
orig_installdir = "/usr/local/cygwin";

同时 mkdir /usr/local/cygwin
然后执行
$ ./configure --prefix=/usr/local/cygwin
$ make
提示错误

C:\MinGW\bin\ranlib.exe: '/cygdrive/c/Users/name/Desktop/libiconv-1.14/lib/libcharset.a':
No such file

试了一下,对于mingw和msys的那一套,可以接受的路径是 /c/usr/...这样的,而在cygwin中的路径是 /cygdrive/c/usr...
试着用sed和grep 批量替换,以及寻找 生成路径的 cygpath命令,修改相应的参数,但还是失败了。

分割线

既然Cygwin 路径和 Msys mingw不兼容,而我对这一系列的东西不太熟,只能再换MSYS试试了
按cygwin的方法把diff.exe和相关的文件复制到 c:/mingw/bin

打开 MSYS2 Shell

$ ./configure
configure: error: cannot guess build type; you must specify one

添加参数:

$ ./configure --build=mingw32

看上去没什么问题

$ make

跑了一大段后,出现前面同样的问题:

./relocatable.c: In function 'libiconv_relocate':
:0:12: error: 'C' undeclared (first use in this function)
./relocatable.c:423:37: note: in expansion of macro 'INSTALLDIR'
const char orig_installdir = INSTALLDIR;
^~~~~~~~~~
:0:12: note: each undeclared identifier is reported only once for
each function it appears in./relocatable.c:423:37: note: in expansion of macro 'INSTALLDIR'
const char
orig_installdir = INSTALLDIR;
^~~~~~~~~~
:0:13: error: expected ',' or ';' before ':' token
./relocatable.c:423:37: note: in expansion of macro 'INSTALLDIR'
const char orig_installdir = INSTALLDIR;
^~~~~~~~~~
make[1]:
** [Makefile:87: relocatable.lo] Error 1
make[1]: Leaving directory 'C:/Users/ViANG/Desktop/libiconv-1.14/lib'
make: *** [Makefile:33: all] Error 2

找到 libiconv-1.14/lib/relocatable.c
改 INSTALLDIR 为 "/usr/local/cygwin" (忘了去mkdir,好像也没什么问题),继续

$ make
$ make install

看上去没什么问题了 :coverface1

使用MinGW 编译 iconv 库的更多相关文章

  1. mingw编译rtmp库

    下载rtmpdump-2.4 进到里面的librtmp目录下面,执行命令:make SYS=mingw CRYPTO= 这样就编译成功静态库和动态库,如何安装到/usr/local/下面? 执行命令: ...

  2. Clion使用MinGW编译好的boost库

    MinGW编译Boost库可以参考我之前写的编译Boost的文章. 以下是cmake链接boost静态库的配置: cmake_minimum_required(VERSION 3.8) project ...

  3. VS2008编译iconv静态链接库

    iconv是将一种编码格式转换为还有一种编码格式的开源库,比如能够把Windows环境下通用的ASCii(中文是GB2312)编码转换为国际通用的Unicode编码 iconv最新版本号仅仅支持Min ...

  4. Win7 64位 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6

    书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说 ...

  5. Win7 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6

    书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说 ...

  6. QT中使用MinGW 编译的protobuf库--包含库的生成和使用

    QT中使用MinGW 编译的protobuf库--包含库的生成和使用 0前言 1准备工作 2生成protobuf库文件 3在QT中测试protobuf的使用 4结语 0前言 最近要在QT中使用prot ...

  7. Windows 系统 vs2012 MinGW 编译ffmpeg 静态库

    Windows系统下 vs2012编译ffmpeg 动态库 前面已经有文章讲述,本文将讲述如果编译生成ffmpeg静态库以方便 在vs2012下调用. 准备工作:安装MinGW环境,修改ffmpeg配 ...

  8. 解决嵌入式linux系统下iconv库的移植问题

    一.解决问题    在arm开发板上使用framebuff,在汉字显示时,因为只有gb2312的16*16的汉字字库,而ubuntu16.04默认    的编码方式时utf-8,因此需要进行转码(ut ...

  9. 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)

    转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...

随机推荐

  1. 机器学习基石--学习笔记01--linear hard SVM

    背景 支持向量机(SVM)背后的数学知识比较复杂,之前尝试过在网上搜索一些资料自学,但是效果不佳.所以,在我的数据挖掘工具箱中,一直不会使用SVM这个利器.最近,台大林轩田老师在Coursera上的机 ...

  2. MediaElement视频控制:播放、暂停、停止、后退、快进、跳转、音量

    /* =================================================  * Author:     Micro  * Date:       2016=03-25 ...

  3. 延长Toast显示时间

    ---恢复内容开始--- 由于Toast的显示时间只有两种: Toast.LENGTH_SHORT: 2秒 Toast.LENGTH_LONG: 3.5秒 而且是写死的,没给开发者自定义时间的权利,所 ...

  4. [原创]android使用代码生成LayerDrawable的方法和注意事项

    为了有更好的UI体验,一般我们会把button.textview等控件的背景设置上阴影.传统的做法是美工提供一张具有阴影效果的nine patch图,然后将其在xml文件中添加到background属 ...

  5. iOS:缓存与Operation优先级问题

    这篇博客来源于今年的一个面试题,当我们使用SDWebImgae框架中的sd_setImageWithURL: placeholderImage:方法在tableView或者collectionView ...

  6. [转]silverlight Datagrid 行上增加ToolTip

    有两种办法: 1. 直接在后台处理在数据绑定后 ,注册LoadingRow 事件this.DataGrid.LoadingRow += new EventHandler<DataGridRowE ...

  7. 一步步教你搭建VS环境下用C#写WebDriver脚本

    一步步教你搭建VS环境下用C#写WebDriver脚本http://www.automationqa.com/forum.php?mod=viewthread&tid=3529&fro ...

  8. [PaPaPa][需求说明书][V0.2]

    PaPaPa软件需求说明书V0.2 前   言 经过第一版本的需求说明书之后,我发现博客园不让我把文章发到首页,那么对于这种情况该怎么办呢?我决定立马发布V0.2版本来挑战一下博客园的审核制度,嘿嘿 ...

  9. 写的一个Sass 和Compass的例子

    /*1.打开项目根目录下的 config.rb 文件 2.搜索 line_comments 关键词,默认应该是 # line_comments = false 3.去掉前面的 #,保存 config. ...

  10. 基于kubernetes构建Docker集群管理详解-转

    http://blog.liuts.com/post/247/ 一.前言        Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度 ...