You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:13:12