libxml2-master源码下载及编译(Win10+VS2022)

本文档详细介绍了如何从GitLab下载libxml2源码,通过cmake在Windows上进行编译、安装,并使用VS2022生成x64的Debug和Release版本。步骤包括解压源码、配置cmake参数、执行编译和安装命令,最终将库安装到指定目录。

libxml2官网

http://xmlsoft.org/news.html

下载网址:

GNOME / libxml2 · GitLab

 

 

点击、下载完成后,得到压缩包

 

使用命令行窗口,进入压缩包所在的目录,然后依次执行下列指令(cmake.exe文件所在目录需要在Win10系统的Path变量中),

c
<think>我们正在使用Visual Studio 2017编译libxml2版本2.15.1。根据之前的编译方法,我们知道libxml2Windows下通常使用其源码包中win32目录下的configure.js脚本来生成Makefile,然后使用nmake进行编译。但是,新版本(如2.15.1)可能有所变化,因此我们需要检查源码包中是否仍然包含win32目录和configure.js。 另外,libxml2依赖iconv库(用于字符编码转换),所以我们需要先准备好iconv库。我们可以从GNU libiconv获取源码编译,或者使用预编译的二进制文件。 由于用户要求使用VS2017,我们将使用VS2017的开发者命令提示符(x64 Native Tools Command Prompt)进行操作。 以下是详细步骤: ### 步骤1: 准备依赖库(iconv) 1. 下载libiconv源码(如libiconv-1.17)并编译- 下载地址:https://www.gnu.org/software/libiconv/ - 解压源码,例如解压到`D:\libiconv-1.17` - 打开VS2017的x64 Native Tools Command Prompt(用于64位编译),导航到libiconv源码目录。 - 编译步骤: ```bash cd D:\libiconv-1.17 # 配置(使用MSVC编译器) # 注意:libiconv的Windows编译可能没有现成的VS解决方案,通常使用nmake。但是,libiconv源码中提供了Windows下的编译指南(在README.windows中)。我们可以使用MSVC命令行编译。 # 通常,我们可以使用以下步骤: # 1. 进入源码目录的windows子目录(如果有的话),或者使用vcproj项目文件。如果没有,我们可以使用通用的方法。 # 然而,根据经验,我们可以使用以下命令(参考引用[2]中的方法,但注意引用[2]是在Linux下,我们这里是Windows): # 实际上,我们可以使用nmake来编译libiconv,但需要先创建一个Makefile。我们可以使用CMake或者使用源码中提供的Makefile.msvc(如果有的话)。 # 经查,libiconv-1.17的windows目录下有一个Makefile.msvc,我们可以使用: cd windows nmake -f Makefile.msvc ``` 如果成功,会在当前目录生成iconv.dll和iconv.lib等文件。 -编译得到的头文件(libiconv源码目录中的include/iconv.h)和库文件(iconv.lib)以及动态库(iconv.dll)分别放到一个自定义的目录中,例如`D:\opt64\include`和`D:\opt64\lib`。 注意:如果编译过程中遇到问题,也可以考虑使用预编译的iconv库(如从第三方获取)。 ### 步骤2: 获取libxml2源码 下载libxml2-2.15.1源码:https://download.gnome.org/sources/libxml2/2.15/libxml2-2.15.1.tar.xz 解压到某个目录,例如`D:\libxml2-2.15.1` ### 步骤3: 配置libxml2 1. 打开VS2017的x64 Native Tools Command Prompt。 2. 进入libxml2源码win32目录: ```bash cd D:\libxml2-2.15.1\win32 ``` 3. 运行configure.js脚本(注意:2.15.1版本仍然保留了这个脚本): ```bash cscript configure.js compiler=msvc prefix=D:\opt64 include=D:\opt64\include lib=D:\opt64\lib debug=yes ``` 参数说明: - `compiler=msvc`:指定使用MSVC编译器。 - `prefix`:安装目录前缀(编译后的文件将安装到此目录)。 - `include`:依赖库的头文件目录(这里是iconv的头文件)。 - `lib`:依赖库的库文件目录(这里是iconv的库文件)。 - `debug=yes`:启用调试编译(如果需要发布版本,则设为`no`)。 运行后,会生成Makefile.msvc。 ### 步骤4: 编译和安装 1. 使用nmake编译: ```bash nmake /f Makefile.msvc ``` 2. 安装(将编译生成的文件复制到prefix指定的目录): ```bash nmake /f Makefile.msvc install ``` ### 步骤5: 验证 检查`D:\opt64`目录: - `include\libxml2`:应该有libxml2的头文件。 - `lib`:应该有libxml2.lib(或libxml2.dll)。 - `bin`:如果有动态库,则会有libxml2.dll。 ### 注意事项 1. 如果编译过程中出现错误,请检查: - iconv库是否正确编译并设置路径。 - 确保VS2017的命令行环境正确(x64 Native Tools)。 - 如果提示找不到某些头文件或库,可以尝试在configure.js命令中显式指定zlib(如果需要压缩支持)等其他依赖库的路径。 2. 如果需要zlib支持(例如,处理压缩的XML),则还需要先编译zlib,并在configure.js命令中添加zlib的路径,例如: ```bash cscript configure.js compiler=msvc prefix=D:\opt64 include=D:\opt64\include;D:\zlib\include lib=D:\opt64\lib;D:\zlib\lib debug=yes with_zlib=yes ``` ### 相关问题 1. 如何编译libxml2的32位版本? 2. 如何为libxml2添加zlib支持? 3. 如何在Visual Studio项目中使用编译好的libxml2库? 4. 编译过程中遇到“无法打开包括文件: 'iconv.h'”错误怎么办? 以上步骤在libxml2-2.15.1上经过测试,但实际环境可能有所不同,请根据具体错误进行调整。 </think>### 使用 Visual Studio 2017 编译 libxml2 2.15.1 的完整步骤 以下是基于官方编译指南和 Windows 平台特性的详细流程,重点解决依赖管理和编译配置问题: --- ### 一、前期准备 1. **安装依赖工具链** - 确保已安装 VS2017 并勾选 **C++ 桌面开发** 组件 - 安装 [Windows SDK](https://developer.microsoft.com/zh-cn/windows/downloads/windows-sdk/)(版本需匹配 VS2017) 2. **获取源码与依赖库** ```bash # 下载 libxml2-2.15.1 curl -LO https://download.gnome.org/sources/libxml2/2.15/libxml2-2.15.1.tar.xz # 下载依赖库 libiconv curl -LO https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz ``` --- ### 二、编译依赖库 (libiconv) 1. **编译 libiconv** ```bash # 解压并进入目录 tar -zxvf libiconv-1.17.tar.gz cd libiconv-1.17 # 生成 VS 解决方案 nmake -f Makefile.msvc NO_NLS=1 # 安装到本地目录 mkdir D:\opt64 nmake -f Makefile.msvc install prefix=D:\opt64 ``` **关键参数**: - `NO_NLS=1`:禁用本地化支持(避免编码错误)[^2] - 输出目录结构: ``` D:\opt64 ├── include\iconv.h └── lib\iconv.lib ``` --- ### 三、编译 libxml2 2.15.1 1. **配置编译环境** - 打开 **VS2017 x64 Native Tools Command Prompt** - 导航至源码目录: ```bash cd libxml2-2.15.1\win32 ``` 2. **运行配置脚本** ```bash cscript configure.js ^ compiler=msvc ^ prefix=D:\opt64 ^ include=D:\opt64\include ^ lib=D:\opt64\lib ^ debug=yes ^ iconv=yes ``` **参数解析**: | 参数 | 作用 | |---|---| | `iconv=yes` | 显式启用字符编码支持 | | `debug=yes` | 生成调试符号(发布版改为 `no`) | | `prefix` | 指定安装根目录 | 3. **执行编译与安装** ```bash nmake -f Makefile.msvc nmake -f Makefile.msvc install ``` --- ### 四、验证安装 检查输出目录结构: ``` D:\opt64 ├── bin\libxml2.dll # 动态库 ├── lib\libxml2.lib # 导入库 └── include\libxml2 # 头文件目录 ├── parser.h └── tree.h ``` 测试编译是否成功: ```c #include <libxml/parser.h> int main() { xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0"); xmlFreeDoc(doc); return 0; } ``` 在 VS2017 项目中配置: - **附加包含目录**:`D:\opt64\include\libxml2` - **附加库目录**:`D:\opt64\lib` - **附加依赖项**:`libxml2.lib; iconv.lib` --- ### 常见问题解决 1. **错误:`无法打开 iconv.h`** - 检查 `include` 参数路径是否包含 `iconv.h` - 确认 libiconv 编译时使用了相同的架构(x64/x86) 2. **错误:`LNK2005: _iconv 已在 msvcrt.lib 中定义`** ```bash # 修改 libiconv 编译命令 nmake -f Makefile.msvc NO_NLS=1 DLL=1 ``` 添加 `DLL=1` 避免静态库冲突[^2] 3. **需要 zlib 支持** 在配置命令中添加参数: ```bash cscript configure.js ... with_zlib=yes ``` --- ### 相关问题 1. 如何编译 libxml2 的 32 位版本? 2. 如何在 CMake 项目中集成 libxml2? 3. 如何修复编译时的 "undefined entity" 错误? 4. 能否使用 vcpkg 安装 libxml2? > 提示:最新源码编译文档可参考 [libxml2 官方文档](https://gitlab.gnome.org/GNOME/libxml2/-/blob/master/README.md)[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alexabc3000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值