Linux中交叉编译libxml2

1 configure.sh

    编写配置脚本configure.sh如下:

#!/bin/bash
PREFIX=/home/liyihai/rootfs_build
HOST=arm-arago-linux-gnueabi
./configure --prefix=$PREFIX --host=$HOST

    使用如下命令使configure.sh可执行:

chmod +x configure.sh
    执行configure.sh基本即可对libxml2进行配置。

2 arm-linux-gnueabi/python2.7/pyconfig.h

    完成配置后,就使用make命令进行编译。然而,事情并没有那么顺利,提示错误:

In file included from /usr/include/python2.7/Python.h:8:0,
                 from libxml.c:14:
/usr/include/python2.7/pyconfig.h:15:52: fatal error: arm-linux-gnueabi/python2.7/pyconfig.h: No such file or directory
compilation terminated.

    这是什么意思呢?先根据提示,探索一番。

    首先,在/usr/include/python2.7/Python.h的第8行看到:

    

    而在libxml2源码libxml.c的第14行看到:


    最后看看/usr/include/python2.7/pyconfig.h第15行:


    因此,可知知道上面的出错信息是指:找不到arm-linux-gnueabi/python2.7/pyconfig.h这文件。这文件在/usr/include/python2.7/pyconfig.h中被引用到,而/usr/include/python2.7/pyconfig.h又在/usr/include/python2.7/Python.h中被引用到,而/usr/include/python2.7/Python.h则在libxml2源码中的libxml.c文件中被引用到。

    简而言之,就是找不到arm-linux-gnueabi/python2.7/pyconfig.h(最后的提示)

    解决这个问题的方法有2种:a)按照参考资料[3]的方法,在配置文件中添加--without-python选项;b)添加python的头文件路径。

    经过测试,a)方法是可行的。但是b)方法就遇到问题:参考《交叉编译libgd》添加环境变量CFLAGS的方法,在configure.sh中添加:

export CFLAGS=-I/home/liyihai/rootfs_v2.0/usr/include

    CFLAGS指定的目录中包含pytconfig.h,但是问题依旧。

    回顾对上面出错信息的分析发现,现在是交叉编译,为什么还会引用宿主机的头文件目录呢?于是使用查看libxml2的confugre --help帮助信息,发现一项内内容:

 --with-python[=DIR]     build Python bindings if found
    由于下载的libxml2源码中已经绑定了python的源码,于是在configure.sh标本中添加--with-python[=DIR]选项:

#!/bin/bash
PREFIX=/home/liyihai/rootfs_build
HOST=arm-arago-linux-gnueabi
./configure --prefix=$PREFIX --host=$HOST --with-python=/home/liyihai/libxml2-2.6.26/python
    重新配置之后,就可以编译通过了。

参考资料

[1]libxml2-下载

[2]Libxml2库的编译和使用 

[3]交叉编译libxml2

[4]The XML C parser and toolkit of Gnome FAQ

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

OneSea

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

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

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

打赏作者

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

抵扣说明:

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

余额充值