求助:使用Conan交叉编译libxml2(Linux→Windows)遇头文件问题
Linux下Conan交叉编译Windows应用时libxml2头文件缺失问题
我在Linux环境下,用Conan管理依赖,交叉编译一个依赖libxml2的Windows应用,核心问题是libxml2无法找到自身头文件:
第一个错误:找不到config.h
编译时提示如下错误:
x86_64-w64-mingw32-gcc -m64 -O3 -DNDEBUG -I/home/robert/.conan/data/libiconv/1.17/_/_/package/c6817f477abe7e9a917b102f37dc1fd0c2d95f50/include -I/home/robert/.conan/data/zlib/1.2.13/_/_/package/c6817f477abe7e9a917b102f37dc1fd0c2d95f50/include -DWIN32 -m64 -L/home/robert/.conan/data/libiconv/1.17/_/_/package/c6817f477abe7e9a917b102f37dc1fd0c2d95f50/lib -L/home/robert/.conan/data/zlib/1.2.13/_/_/package/c6817f477abe7e9a917b102f37dc1fd0c2d95f50/lib /home/robert/.conan/data/libxml2/2.10.3/_/_/build/6a818f7d8bbba2942e1499f2d61557299d4122bd/src/xmllint.c -o xmllint In file included from /home/robert/.conan/data/libxml2/2.10.3/_/_/build/6a818f7d8bbba2942e1499f2d61557299d4122bd/src/xmllint.c:9: /home/robert/.conan/data/libxml2/2.10.3/_/_/build/6a818f7d8bbba2942e1499f2d61557299d4122bd/src/libxml.h:30:10: fatal error: config.h: No such file or directory 30 | #include "config.h" | ^~~~~~~~~~ compilation terminated.
第二个错误:手动复制config.h后找不到libxml/xmlversion.h
尝试手动将config.h复制到源码目录后,出现新错误:
x86_64-w64-mingw32-gcc -m64 -O3 -DNDEBUG -I/home/robert/.conan/data/libiconv/1.17/_/_/package/c6817f477abe7e9a917b102f37dc1fd0c2d95f50/include -I/home/robert/.conan/data/zlib/1.2.13/_/_/package/c6817f477abe7e9a917b102f37dc1fd0c2d95f50/lib -DWIN32 -m64 -L/home/robert/.conan/data/libiconv/1.17/_/_/package/c6817f477abe7e9a917b102f37dc1fd0c2d95f50/lib -L/home/robert/.conan/data/zlib/1.2.13/_/_/package/c6817f477abe7e9a917b102f37dc1fd0c2d95f50/lib /home/robert/.conan/data/libxml2/2.10.3/_/_/build/6a818f7d8bbba2942e1499f2d61557299d4122bd/src/xmllint.c -o xmllint In file included from /home/robert/.conan/data/libxml2/2.10.3/_/_/build/6a818f7d8bbba2942e1499f2d61557299d4122bd/src/xmllint.c:9: /home/robert/.conan/data/libxml2/2.10.3/_/_/build/6a818f7d8bbba2942e1499f2d61557299d4122bd/src/libxml.h:31:10: fatal error: libxml/xmlversion.h: No such file or directory 31 | #include <libxml/xmlversion.h> | ^~~~~~~~~~~~~~~~~~~~~ compilation terminated. make: *** [<builtin>: xmllint] Error 1 libxml2/2.10.3: libxml2/2.10.3: ERROR: Package '6a818f7d8bbba2942e1499f2d61557299d4122bd' build failed libxml2/2.10.3: WARN: Build folder /home/robert/.conan/data/libxml2/2.10.3/_/_/build/6a818f7d8bbba2942e1499f2d61557299d4122bd/build-release ERROR: libxml2/2.10.3: Error in build() method, line 298 autotools.make(target) ConanException: Error 2 while executing make xmllint -j4
我的配置
conanfile.py
from conan import ConanFile from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout class SfeMapconvConan(ConanFile): name = "sfe-mapconv" version = "0.1.0" license = "MIT License" author = "Robert The Sable <robertthesable@gmail.com>" url = "https://gitlab.com/robertsstuff/sfc-mapconv" description = "TMX map converter for the Super Famicom Fire Emblem games." settings = "os", "compiler", "build_type", "arch" requires = "zlib/1.2.13", "libxml2/2.10.3", "zstd/1.5.4" options = {"mode": ["tests", "qt"]} generators = "cmake" def layout(self): cmake_layout(self) def generate(self): tc = CMakeToolchain(self) tc.generate() def build(self): cmake = CMake(self) cmake.configure() cmake.build() def package(self): cmake = CMake(self) cmake.install()
交叉编译profile文件
toolchain=/usr/x86_64-w64-mingw32 # Adjust this path target_host=x86_64-w64-mingw32 cc_compiler=gcc cxx_compiler=g++ [env] CHOST=$target_host AR=$target_host-ar AS=$target_host-as RANLIB=$target_host-ranlib CC=$target_host-$cc_compiler CXX=$target_host-$cxx_compiler STRIP=$target_host-strip RC=$target_host-windres [settings] # We are cross-building to Windows os=Windows arch=x86_64 compiler=gcc os_build=Linux arch_build=x86_64 build_type=Release # Adjust to the gcc version of your MinGW package compiler.version=10 compiler.libcxx=libstdc++11 build_type=Release
使用的命令
conan install -pr:h mingw.profile -s:b os_build=Linux -o mode=qt --build=missing .
环境版本
- Conan:1.59.0(试过Conan 2,但没找到Linux转Windows交叉编译的可用文档)
- MinGW:apt安装的10.3.0-14
请问我哪里操作有误?
内容的提问来源于stack exchange,提问作者Robert Stewart
相关产品推荐
相关产品推荐

