Arm Linux交叉编译Xalan-C++

1. Xalan-C++源代码下载http://xalan.apache.org/xalan-c/download.html2. Xalan-C++帮助文档https://xml.apache.org/xalan-c/index.html Xalan-C++需要Xerces-C++的支持。所以需要先下载和编译Xerces-C++。注意...

1. Xalan-C++源代码下载

http://xalan.apache.org/xalan-c/download.html

2. Xalan-C++帮助文档

https://xml.apache.org/xalan-c/index.html

 Xalan-C++需要Xerces-C++的支持。所以需要先下载和编译Xerces-C++。注意版本匹配, Xalan-C++ 1.11需要Xerces-C++ 3.0以上的版本。

之前的版本不建议使用,对Linux支持不是很好 

3.Xerces-C++源代码下载

http://mirror.bit.edu.cn/apache/xerces/c/3/sources/

4.Xerces-C++交叉编译

#!/bin/sh

XALAN_SRC_PATH=/root/Documents/work_space/xalan-c/xalan-c
XERCES_SRC_PATH=/root/Documents/work_space/xerces-c/xerces-c-3.1.0
GCC=your-cross-compile-path/your-gcc
GPP=your-cross-compile-path/your-g++
export XERCESCROOT=your-install-pathecho ${XALAN_SRC_PATH} echo ${XERCES_SRC_PATH} cd $XERCES_SRC_PATH if [ $? -ne 0 ]; then echo "failed" else ./configure --disable-static CC=${GCC} CXX=${GPP} --prefix=${XERCESCROOT} --host=arm-linux if [ $? -ne 0 ]; then echo "failed" else make install fi fi

 

5. Xerces-C++帮助文档

源代码的doc/index.html里面有

6.Xalan-C++交叉编译

Xalan-C在交叉编译过程中会使用到自己生成的MsgCreator,所以如果编译机器和目标机器的可执行程序不一致,可能会导致编译失败。

所以这里要采用特殊的方法。

修改…./xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/Malefile.in文件

将XSL_BIN_DIR改成XSL_BIN_TMP_DIR,然后在编译脚本里加上XSL_BIN_TMP_DIR这个变量路径,指向本及可执行的MsgCreator程序(可以是之前本机编译好的程序)

注意,MsgCreator还依赖Xerces生成的库,因此不要忘记在脚本里加上

下面是参考编译脚本:

#!/bin/sh
XERCESCROOT=/opt/project/dependencies/gnueabi/xerces
XALANCROOT=/root/Documents/work_space/xalan-c-1.11/c
GCC=your-cross-compile-path/your-gcc
GPP=your-cross-compile-path/your-g++
INSTALL_PATH=/opt/project/dependencies/gnueabi/xalan XSL_BIN_TMP_DIR=/root/Documents/work_space/xalan-c-1.11/c/binTmp export XERCESCROOT export XALANCROOT export XSL_BIN_TMP_DIR export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/project/dependencies/x86/xerces/lib:/opt/project/dependencies/x86/xerces/bin cd ${XALANCROOT} if [ $? -ne 0 ]; then echo "failed" else ./runConfigure -p linux -c ${GCC} -x ${GPP} -P ${INSTALL_PATH} -C--host=arm-linux if [ $? -ne 0 ]; then echo "failed" else make clean make install fi fi

 

10. 其它细节

本文只是记录一些比较大的坑,一些正常流程可以参考帮助文档。

 

 

本文标题为:Arm Linux交叉编译Xalan-C++