我一直在尝试使用xerces 3.1.1专门编译xalan-c 1.11。在Ubuntu 14.x 64上使用来自CodeSourcery的手臂交叉编译工具链4.3.3。
xalan-c有两个配置脚本。首先是通常的./configure,其次是./runConfigure。
到目前为止,我一直在用[]交叉编译其他库(例如libusb-1.0 / libusb-0.1 / openssl)>
--host../configure --host=arm-none-linux-gnueabi --prefix="/home/user/sysroot-arm-sf/usr/local/"
但是这次我相信我需要使用./runConfigure,否则未设置某些环境变量(例如,它如何处理消息)我使用:
./runConfigure -p linux -x arm-none-linux-gnueabi-g++ -c arm-none-linux-gnueabi-gcc -P "/home/user/sysroot-arm-sf/usr/local/" -C--host=arm-none-linux-gnueabi
相反,我认为它等效于./configure。 ./runConfigure使用所有默认值(不幸的是,它无法识别的c和c ++编译器除外)
Generating makefiles with the following options ... Platform: linux C Compiler: arm-none-linux-gnueabi-gcc C++ Compiler: arm-none-linux-gnueabi-g++ Extra compile options: Extra link options: Transcoder: default Localization system: inmem Locale: en_US Thread option: pthread bitsToBuild option: 32 Extra configure options: --prefix=/home/user/sysroot-arm-sf/usr/local/ --host=arm-none-linux-gnueabi Debug is OFF I do not recognize the C compiler 'arm-none-linux-gnueabi-gcc'. Continuing anyway ... I do not recognize the C++ compiler 'arm-none-linux-gnueabi-g++'. Continuing anyway ... configure: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used. checking for arm-none-linux-gnueabi-gcc... arm-none-linux-gnueabi-gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... yes checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether arm-none-linux-gnueabi-gcc accepts -g... yes checking for arm-none-linux-gnueabi-gcc option to accept ANSI C... none needed checking for arm-none-linux-gnueabi-g++... arm-none-linux-gnueabi-g++ checking whether we are using the GNU C++ compiler... yes checking whether arm-none-linux-gnueabi-g++ accepts -g... yes checking for a BSD-compatible install... /usr/bin/install -c checking for autoconf... autoconf checking build system type... x86_64-unknown-linux-gnu checking host system type... arm-none-linux-gnueabi checking for floor in -lm... yes checking how to run the C++ preprocessor... arm-none-linux-gnueabi-g++ -E checking for egrep... grep -E checking for ANSI C header files... yes checking for mbstowcs... yes checking if mbstowcs can count only... cross-compiling default configure: creating ./config.status config.status: creating Makefile.incl config.status: creating Makefile config.status: creating src/xalanc/Makefile config.status: creating src/xalanc/Utils/Makefile config.status: creating src/xalanc/Utils/MsgCreator/Makefile config.status: creating src/xalanc/Utils/XalanMsgLib/Makefile config.status: creating samples/Makefile config.status: creating Tests/Makefile If the result of the above commands look OK to you, go to the directory /home/user/xalan-c-1.11/c/ and type "gmake" or "make" to make the XALAN-C system. Note: You must use GNU make to use the Xalan Makefile.
然后我会尝试
make make -C src/xalanc all make[1]: Entering directory `/home/user/xalan-c-1.11/c/src/xalanc' Preparing the directory structure for a build ... mkdir -p ../../obj mkdir -p ../../lib mkdir -p ../../bin make -C Utils prepare make[2]: Entering directory `/home/user/xalan-c-1.11/c/src/xalanc/Utils' mkdir -p ../../../nls mkdir -p ../../../nls/include make[2]: Leaving directory `/home/user/xalan-c-1.11/c/src/xalanc/Utils' make -C Utils locale make[2]: Entering directory `/home/user/xalan-c-1.11/c/src/xalanc/Utils' make -C MsgCreator make[3]: Entering directory `/home/user/xalan-c-1.11/c/src/xalanc/Utils/MsgCreator' arm-none-linux-gnueabi-g++ -O3 -DNDEBUG -pthread -D_REENTRANT -Wall -fPIC -DLINUX -D_REENTRANT -DXALAN_INMEM_MSG_LOADER -c -I/home/user/xalan-c-1.11/c//src -I/home/user/xalan-c-1.11/c//include -I../../../../nls/include -I/home/user/xerces-c-3.1.1//src/ -I/home/user/xerces-c-3.1.1//include/xercesc -I/home/user/xerces-c-3.1.1//include/ -o ../../../../obj/MsgFileOutputStream.o /home/user/xalan-c-1.11/c//src/xalanc/Utils/MsgCreator/MsgFileOutputStream.cpp arm-none-linux-gnueabi-g++ -O3 -DNDEBUG -pthread -D_REENTRANT -Wall -fPIC -DLINUX -D_REENTRANT -DXALAN_INMEM_MSG_LOADER -c -I/home/user/xalan-c-1.11/c//src -I/home/user/xalan-c-1.11/c//include -I../../../../nls/include -I/home/user/xerces-c-3.1.1//src/ -I/home/user/xerces-c-3.1.1//include/xercesc -I/home/user/xerces-c-3.1.1//include/ -o ../../../../obj/ICUResHandler.o /home/user/xalan-c-1.11/c//src/xalanc/Utils/MsgCreator/ICUResHandler.cpp arm-none-linux-gnueabi-g++ -O3 -DNDEBUG -pthread -D_REENTRANT -Wall -fPIC -DLINUX -D_REENTRANT -DXALAN_INMEM_MSG_LOADER -c -I/home/user/xalan-c-1.11/c//src -I/home/user/xalan-c-1.11/c//include -I../../../../nls/include -I/home/user/xerces-c-3.1.1//src/ -I/home/user/xerces-c-3.1.1//include/xercesc -I/home/user/xerces-c-3.1.1//include/ -o ../../../../obj/InMemHandler.o /home/user/xalan-c-1.11/c//src/xalanc/Utils/MsgCreator/InMemHandler.cpp arm-none-linux-gnueabi-g++ -O3 -DNDEBUG -pthread -D_REENTRANT -Wall -fPIC -DLINUX -D_REENTRANT -DXALAN_INMEM_MSG_LOADER -c -I/home/user/xalan-c-1.11/c//src -I/home/user/xalan-c-1.11/c//include -I../../../../nls/include -I/home/user/xerces-c-3.1.1//src/ -I/home/user/xerces-c-3.1.1//include/xercesc -I/home/user/xerces-c-3.1.1//include/ -o ../../../../obj/MsgCreator.o /home/user/xalan-c-1.11/c//src/xalanc/Utils/MsgCreator/MsgCreator.cpp arm-none-linux-gnueabi-g++ -O3 -DNDEBUG -pthread -D_REENTRANT -Wall -fPIC -DLINUX -D_REENTRANT -DXALAN_INMEM_MSG_LOADER -c -I/home/user/xalan-c-1.11/c//src -I/home/user/xalan-c-1.11/c//include -I../../../../nls/include -I/home/user/xerces-c-3.1.1//src/ -I/home/user/xerces-c-3.1.1//include/xercesc -I/home/user/xerces-c-3.1.1//include/ -o ../../../../obj/NLSHandler.o /home/user/xalan-c-1.11/c//src/xalanc/Utils/MsgCreator/NLSHandler.cpp arm-none-linux-gnueabi-g++ -O3 -DNDEBUG -pthread -D_REENTRANT -Wall -fPIC -DLINUX -D_REENTRANT -DXALAN_INMEM_MSG_LOADER -c -I/home/user/xalan-c-1.11/c//src -I/home/user/xalan-c-1.11/c//include -I../../../../nls/include -I/home/user/xerces-c-3.1.1//src/ -I/home/user/xerces-c-3.1.1//include/xercesc -I/home/user/xerces-c-3.1.1//include/ -o ../../../../obj/SAX2Handler.o /home/user/xalan-c-1.11/c//src/xalanc/Utils/MsgCreator/SAX2Handler.cpp arm-none-linux-gnueabi-g++ -DLINUX -fPIC -pthread -D_REENTRANT -DXALAN_INMEM_MSG_LOADER \ -lm -lpthread ../../../../obj/MsgFileOutputStream.o ../../../../obj/ICUResHandler.o ../../../../obj/InMemHandler.o ../../../../obj/MsgCreator.o ../../../../obj/NLSHandler.o ../../../../obj/SAX2Handler.o -o ../../../../bin/MsgCreator -L/home/user/xerces-c-3.1.1//lib -lxerces-c make[3]: Leaving directory `/home/user/xalan-c-1.11/c/src/xalanc/Utils/MsgCreator' ../../../bin/MsgCreator /home/user/xalan-c-1.11/c//src/xalanc/NLS/en_US/XalanMsg_en_US.xlf -TYPE inmem -LOCALE en_US ../../../bin/MsgCreator: ../../../bin/MsgCreator: cannot execute binary file make[2]: *** [../../../nls/include/LocalMsgData.hpp] Error 126 make[2]: Leaving directory `/home/user/xalan-c-1.11/c/src/xalanc/Utils' make[1]: *** [locale] Error 2 make[1]: Leaving directory `/home/user/xalan-c-1.11/c/src/xalanc' make: *** [all] Error 2
它将执行失败
../../../bin/MsgCreator /home/user/xalan-c-1.11/c//src/xalanc/NLS/en_US/XalanMsg_en_US.xlf -TYPE inmem -LOCALE en_US
是
bin/MsgCreator: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped
手臂弓的二进制文件。我虽然./runConfigure使用了--host选项,但知道这是一个交叉构建。也许这是xalan-c特有的?
我一直在尝试使用xerces 3.1.1专门编译xalan-c 1.11。使用ubuntu 14.x 64上CodeSourcery的arm交叉编译工具链4.3.3。xalan-c有两个configure脚本。首先...
它确实说
我尝试了以下显然可行的解决方法。
这个问题确实很棘手,很奇怪。幸运的是,我找到了解决此问题的方法。从错误中,我们可以得出结论,构建过程使用了名为“ MsgCreator”的可执行工具。