在Windows上通过cygwin和VC编译64位iconv库
- 操作系统版本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库相关推荐
- 使用VS2010编译64的Geos库
Geos库在cmake中总是报错,所以我决定试试nmake编译64位的库.现将编译过程记录如下: 1.下载Geos,我下的是最新版3.5.0,地址在 http://trac.osgeo.org/geo ...
- Window下编译 64位ffmpeg 引入libx264及libmp3lame编码库
好记性不如烂笔头,每次编译总要有些时间折腾,记录下编译过程,方便后来者. 本文 介绍windows下编译64位Ffmpeg库 (版本V4.02)如何引入libx264及libmp3lame(编码mp3 ...
- Windows下VS2015 MPI编译64位Boost1.64
Windows下VS2015编译64位Boost1.64 2017年12月08日 15:51:48 阅读数:346 参考原帖:https://gist.github.com/UnaNancyOwen/ ...
- 使用源码编译64位的3D Slicer(综述)
3D Slicer是一款开源的用于医学图像分析(主要是分割和配准)与可视化成像的软件.我们可以把自己插件加入到3D Slicer软件中来实现我们想要的功能,它向我们提供一个检测算法与改进算法的平台.官 ...
- 使用MSYS2编译64位gvim
1. 下载安装MSYS2 在https://msys2.github.io/下载MSYS2,推荐下载x86-64版,此版本内置了MinGW32与MinGW64 安装后首先更新MSYS2系统,顺序执行下 ...
- Win32:编译64位程序的注意点
有许多程序员在遇到32位程序内存超过2G就崩溃了,因为2G是32位程序用户空间的最大值,于是就选择编译成64位程序,认为64位内存空间就一下在上升到了64位地址空间最大值了. 这种理解是不对的.关键还 ...
- 编译64位Detours(其他vs版本同理)
编译64位Detours fatal error C1083: 无法打开包括文件:"excpt.h" vs2012编译64位Detours(其他vs版本同理) vs项目设置选项 使 ...
- linux cmake 编译64位,cmake编译win下64位obs
obs是一款开源编码推流工具,简单易用,非常流行. 一次项目中,发现本台式机I3处理器下32位obs推流CPU使用率100%.而使用的第三方设备在64位下,性能较好. 所以需要编译64位obs并且编译 ...
- VS中编译64位程序以及遇到的问题(E0000235)
安装64位操作系统不是编译64位程序的必要条件,关键是要装64位程序的编译器. 1. 选择"Build" – "Configuration Manager"菜单 ...
最新文章
- 计算最长公共数字串个数
- 芯片巨头为何痴恋开源软件?英特尔Imad Sousou来解密
- 数据结构第六篇——顺序存储结构与链式存储结构的特点
- android 添加桌面快捷方式
- Android 生成分享长图并且添加全图水印
- [HAOI2011]problem a
- 实现C++与C的混合编程
- 写了一个快速阅读训练的小软件
- MATLAB机器学习决策树网格法优化参数学习笔记
- 微软输入法数字有间隔_各种中文输入法中输入间隔号“·”的措施
- 速卖通店铺流量下滑什么原因,如何做提升?(测评补单)
- 冰狐智能辅助入门教程
- im即时通讯开发:浅析MQTT通信协议
- 什么是MTTF,MTBF,MTRF?
- 由ERP生产提前期的设定引发的思考
- 欢迎观看Toni_hou的#生活6
- Windows sqlite3 安装使用+ 1SQLiteDeveloper 可视化查看
- 使用python解决数独问题
- 数学教程之终生学习者必读的22本精彩数学书
- 3000套3d打印模型素材
热门文章
- oc中block的本质及底层原理
- WebStorm 5.0 注册码
- synopsys的rm流程_Synopsys工具简介(转)
- Android自定义视频播放器(一)
- java实验报告金陵科技学院_金陵科技学院java
- 微信小程序 - 云开发
- 为什么不能把#include 指令放置在 extern C { ... } 里面?
- jquery折叠卡片
- linux下run目录下不小心被删除了,Linux下重要文件不小心被删除?别着急,看这里!...
- 【C语言数组题】编写程序查找一个英文句子中所有的最长的单词