原文链接: 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. Java 7 jstat – JVM Statistics Monitoring Tool【翻译】

    原文地址:Java 7 jstat 本文内容 语法 参数 描述 虚拟机标识符 选项 一般选项 输出选项 示例 先发出来,然后慢慢翻译~ 语法 jstat [ generalOption | outpu ...

  2. cocos2d-x 3.0rc2中读取sqlite文件

    cocos2d-x 3.0rc2中读取sqlite文件的方式,在Android中直接读取软件内的会失败.须要复制到可写的路径下 sqlite3* dbFile = NULL; std::string ...

  3. windbg-bp、 bm、 bu、 bl、 bc、 ba(断点、硬件断点)

    bp bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction . 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对 ...

  4. Microsoft Fakes

    http://baike.baidu.com/view/9602275.htm?fr=aladdin http://technet.microsoft.com/zh-cn/magazine/hh549 ...

  5. 软件包管理 之 RPM 基础 《RPM 的介绍和应用》

    RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:在Fedora .Redhat.Mandriva. ...

  6. 【原创】开源BI领袖-SpagoBI5.X最详细的中文版介绍

    SpagoBI是唯一100%的开源商业智能套件由 Engineering Group的SpagoBI实验室(www.eng.it)开发和管理.它提供了强大的分析能力,从传统的报表和图表功能到自助分析. ...

  7. Android上面安装Linux的方法

    方法一: 并行安装Linux(不在Android操作系统之上运行,需要设备已经unlocked并且rooted) 我还没玩过.放两个书签: How to Install Ubuntu on Andro ...

  8. (转)数字格式化函数:Highcharts.numberFormat()

    一.函数说明 该函数用于图表中数值的格式化,常见用途有数值精度控制.小数点符.千位符显示控制等.   二.函数使用   1.函数构造及参数 Highcharts.numberFormat (Numbe ...

  9. IT战略规划咨询

    目录 1IT战略规划微咨询简介 2IT战略的意义 3服务模式 4IT战略规划焦点问题 5IT战略规划步骤 6服务提供方微咨询网 7微咨询价值 8微咨询服务方式 9IT工作规划与IT战略规... IT战 ...

  10. apache 配置反向代理服务器

    前几天实验了下 nginx 配置反向代理服务器.虽然 nginx 的安装很麻烦,但是用起来倒是很简单.不过组里没人用过 nginx,apache 服务器大家倒是蛮熟,为了减少 ops team 的工作 ...