• 操作系统版本Windows 11 X64专业版
  • Visual Studio 2019 Professional
  • Cygwin64安装gcc-core、g++、gdb、make、libtool包
  • 以下所有命令均在“Cygwin64 Terminal”命令行中执行

1 Windows C library headers and libraries.

WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt'
WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\'
INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
LIB="${WindowsCrtLibDir}x64;$LIB"

2 Windows API headers and libraries.

WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\'
WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\'
INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
LIB="${WindowsSdkLibDir}x64;$LIB"

3 Visual C++ tools, headers and libraries.

VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional'
VCINSTALLDIR="${VSINSTALLDIR}"'\VC\Tools\MSVC\14.29.30133'
PATH=`cygpath -u "${VCINSTALLDIR}"`/bin/Hostx64/x64:"$PATH"
INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
LIB="${VCINSTALLDIR}"'\lib\X64;'"${LIB}"export INCLUDE LIB

4 configure, and build commands.

PATH=/usr/local/msvc64/bin:$PATH
export PATH
echo ${PATH}
#win32_target仅反选一下最接近的版本
win32_target=_WIN32_WINNT_WINXP   # for MSVC 9.0
win32_target=_WIN32_WINNT_VISTA   # possibly for MSVC >= 10.0
win32_target=_WIN32_WINNT_WIN7    # possibly for MSVC >= 10.0
win32_target=_WIN32_WINNT_WIN8    # possibly for MSVC >= 10.0

5 scripts ‘ar-lib’ and ‘compile’.

#cygwin cmd run
cd $HOME
mkdir msvc

下载ar-lib后保存至cygwin安装目录$HOME/msvc/ar-lib

下载compile后保存至cygwin安装目录$HOME/msvc/compile

#cygwin cmd run
cd $HOME/msvc
chmod a+x ar-lib compile

6 libiconv

下载libiconv

cd D:/build/pg
tar -xf libiconv-1.16.tar.gz
cd libiconv-1.16./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/msvc64 \--enable-static=no \CC="$HOME/msvc/compile cl -nologo" \CFLAGS="-MD" \CXX="$HOME/msvc/compile cl -nologo" \CXXFLAGS="-MD" \CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc64/include" \LDFLAGS="-L/usr/local/msvc64/lib" \LD="link" \NM="dumpbin -symbols" \STRIP=":" \AR="$HOME/msvc/ar-lib lib" \RANLIB=":"

修改libiconv-1.16\libcharset\lib\relocatable-stub.c,注释

/*
extern LIBCHARSET_DLL_EXPORTED void
libcharset_set_relocation_prefix (const char *orig_prefix, const char *curr_prefix);
*/

因为libcharset_set_relocation_prefix方法已经在libcharset.h中声明过了。

make
make check
make install

7 gettext

下载gettext

cd D:/build/pg
tar -xf gettext-0.21.tar.gz
cd gettext-0.21./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/msvc64 \--with-libiconv-prefix=/usr/local/msvc64 \--enable-static=no \CC="$HOME/msvc/compile cl -nologo" \CFLAGS="-MD" \CXX="$HOME/msvc/compile cl -nologo" \CXXFLAGS="-MD" \CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc64/include" \LDFLAGS="-L/usr/local/msvc64/lib" \LD="link" \NM="dumpbin -symbols" \STRIP=":" \AR="$HOME/msvc/ar-lib lib" \RANLIB=":"
make
make check
make install
cd ..
rm -rf gettext-0.21

8 最后

安装完成后从cygwin安装目录中的usr/local/msvc64复制到你的VC库即可。

在Windows上通过cygwin和VC编译64位iconv库相关推荐

  1. 使用VS2010编译64的Geos库

    Geos库在cmake中总是报错,所以我决定试试nmake编译64位的库.现将编译过程记录如下: 1.下载Geos,我下的是最新版3.5.0,地址在 http://trac.osgeo.org/geo ...

  2. Window下编译 64位ffmpeg 引入libx264及libmp3lame编码库

    好记性不如烂笔头,每次编译总要有些时间折腾,记录下编译过程,方便后来者. 本文 介绍windows下编译64位Ffmpeg库 (版本V4.02)如何引入libx264及libmp3lame(编码mp3 ...

  3. Windows下VS2015 MPI编译64位Boost1.64

    Windows下VS2015编译64位Boost1.64 2017年12月08日 15:51:48 阅读数:346 参考原帖:https://gist.github.com/UnaNancyOwen/ ...

  4. 使用源码编译64位的3D Slicer(综述)

    3D Slicer是一款开源的用于医学图像分析(主要是分割和配准)与可视化成像的软件.我们可以把自己插件加入到3D Slicer软件中来实现我们想要的功能,它向我们提供一个检测算法与改进算法的平台.官 ...

  5. 使用MSYS2编译64位gvim

    1. 下载安装MSYS2 在https://msys2.github.io/下载MSYS2,推荐下载x86-64版,此版本内置了MinGW32与MinGW64 安装后首先更新MSYS2系统,顺序执行下 ...

  6. Win32:编译64位程序的注意点

    有许多程序员在遇到32位程序内存超过2G就崩溃了,因为2G是32位程序用户空间的最大值,于是就选择编译成64位程序,认为64位内存空间就一下在上升到了64位地址空间最大值了. 这种理解是不对的.关键还 ...

  7. 编译64位Detours(其他vs版本同理)

    编译64位Detours fatal error C1083: 无法打开包括文件:"excpt.h" vs2012编译64位Detours(其他vs版本同理) vs项目设置选项 使 ...

  8. linux cmake 编译64位,cmake编译win下64位obs

    obs是一款开源编码推流工具,简单易用,非常流行. 一次项目中,发现本台式机I3处理器下32位obs推流CPU使用率100%.而使用的第三方设备在64位下,性能较好. 所以需要编译64位obs并且编译 ...

  9. VS中编译64位程序以及遇到的问题(E0000235)

    安装64位操作系统不是编译64位程序的必要条件,关键是要装64位程序的编译器. 1. 选择"Build" – "Configuration Manager"菜单 ...

最新文章

  1. 计算最长公共数字串个数
  2. 芯片巨头为何痴恋开源软件?英特尔Imad Sousou来解密
  3. 数据结构第六篇——顺序存储结构与链式存储结构的特点
  4. android 添加桌面快捷方式
  5. Android 生成分享长图并且添加全图水印
  6. [HAOI2011]problem a
  7. 实现C++与C的混合编程
  8. 写了一个快速阅读训练的小软件
  9. MATLAB机器学习决策树网格法优化参数学习笔记
  10. 微软输入法数字有间隔_各种中文输入法中输入间隔号“·”的措施
  11. 速卖通店铺流量下滑什么原因,如何做提升?(测评补单)
  12. 冰狐智能辅助入门教程
  13. im即时通讯开发:浅析MQTT通信协议
  14. 什么是MTTF,MTBF,MTRF?
  15. 由ERP生产提前期的设定引发的思考
  16. 欢迎观看Toni_hou的#生活6
  17. Windows sqlite3 安装使用+ 1SQLiteDeveloper 可视化查看
  18. 使用python解决数独问题
  19. 数学教程之终生学习者必读的22本精彩数学书
  20. 3000套3d打印模型素材

热门文章

  1. oc中block的本质及底层原理
  2. WebStorm 5.0 注册码
  3. synopsys的rm流程_Synopsys工具简介(转)
  4. Android自定义视频播放器(一)
  5. java实验报告金陵科技学院_金陵科技学院java
  6. 微信小程序 - 云开发
  7. 为什么不能把#include 指令放置在 extern C { ... } 里面?
  8. jquery折叠卡片
  9. linux下run目录下不小心被删除了,Linux下重要文件不小心被删除?别着急,看这里!...
  10. 【C语言数组题】编写程序查找一个英文句子中所有的最长的单词