您的位置:首页 > 运维架构 > Linux

arm+linux交叉编译libxml2

2015-09-29 10:05 633 查看

Linux中交叉编译libxml2

1 configure.sh

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

#!/bin/bash
PREFIX=/home/share/libxml2
HOST=arm-hisi-linux
./configure --prefix=$PREFIX --host=$HOST

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

2 arm-hisi-linuxi/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/share/libxml2/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/share/libxml2
HOST=arm-hisi-linux
./configure --prefix=$PREFIX --host=$HOST --with-python=/home/share/libxml2/python
重新配置之后,就可以编译通过了。
原文参考:

http://m.blog.csdn.net/blog/Q1302182594/44975527
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: