在Windows上通过cygwin和VC编译64位iconv库

在Windows上通过cygwin和VC编译64位iconv库,第1张

在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 Kits10Include10.0.19041.0ucrt'
WindowsCrtLibDir='C:Program Files (x86)Windows Kits10lib10.0.19041.0ucrt'
INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
LIB="${WindowsCrtLibDir}x64;$LIB"
2 Windows API headers and libraries.
WindowsSdkIncludeDir='C:Program Files (x86)Windows Kits10Include10.0.19041.0'
WindowsSdkLibDir='C:Program Files (x86)Windows Kits10Lib10.0.19041.0um'
INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
LIB="${WindowsSdkLibDir}x64;$LIB"
3 Visual C++ tools, headers and libraries.
VSINSTALLDIR='C:Program Files (x86)Microsoft Visual Studio2019Professional'
VCINSTALLDIR="${VSINSTALLDIR}"'VCToolsMSVC14.29.30133'
PATH=`cygpath -u "${VCINSTALLDIR}"`/bin/Hostx64/x64:"$PATH"
INCLUDE="${VCINSTALLDIR}"'include;'"${INCLUDE}"
LIB="${VCINSTALLDIR}"'libX64;'"${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.16libcharsetlibrelocatable-stub.c,注释

 

因为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库即可。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5593334.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存