Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
交叉编译xalan-c 1.11,arm gcc,CodeSourcery 4.3.3,./configure_Arm_Cross Platform_Configure_Xalan_Codesourcery - Fatal编程技术网

交叉编译xalan-c 1.11,arm gcc,CodeSourcery 4.3.3,./configure

交叉编译xalan-c 1.11,arm gcc,CodeSourcery 4.3.3,./configure,arm,cross-platform,configure,xalan,codesourcery,Arm,Cross Platform,Configure,Xalan,Codesourcery,我一直在尝试用xerces 3.1.1编译xalan-c,特别是1.11。在ubuntu 14.x64上使用CodeSourcery中的arm交叉编译工具链4.3.3 xalan-c有两个配置脚本。首先是通常的./configure,然后是./runConfigure 到目前为止,我一直在交叉编译其他lib(例如libusb-1.0/libusb-0.1/openssl) 但是这次我认为我需要使用./runConfigure,否则一些环境变量没有设置(例如,它如何处理消息) 我使用: 相反,我认

我一直在尝试用xerces 3.1.1编译xalan-c,特别是1.11。在ubuntu 14.x64上使用CodeSourcery中的arm交叉编译工具链4.3.3

xalan-c有两个配置脚本。首先是通常的./configure,然后是./runConfigure

到目前为止,我一直在交叉编译其他lib(例如libusb-1.0/libusb-0.1/openssl)

但是这次我认为我需要使用./runConfigure,否则一些环境变量没有设置(例如,它如何处理消息) 我使用:

相反,我认为这相当于./configure。./RunDebug使用所有默认值(除了C和C++编译器,它不认识,不幸)

那我试试看

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特有的

它确实说

checking whether we are cross compiling... yes
所以在我看来,这看起来像是一个测试很差的makefile


你可以试着调试它,也可以直接安装,这样ARM二进制文件就可以神奇地工作了(假设它们可以找到它们的库)。

我尝试了下面的解决方法,显然效果不错

xalanc bin/文件夹中的文件似乎只在编译时使用(至少我猜是这样)。Xalan生成头文件等,以编译libxalanMsg.so

这是一个漫长的过程,但我只是为Ubuntu x86预编译这些bin/文件,并将这些文件复制到我的交叉编译bin文件夹中


完成了。(至少现在是这样)

这个问题真的很棘手,也很奇怪。幸运的是,我找到了解决这个问题的方法。 从错误中,我们可以得出结论,构建过程使用了一个名为“MsgCreator”的可执行工具

它来自哪里? 实际上,该工具是构建过程的中间产品。Xalan生成它并使用这个工具来做他想做的事情

发生了什么事? 您可能还记得,您现在正在交叉编译Xalan,因此MsgCreator的目标可执行平台可能不支持您的构建平台。这种情况将导致您看到的错误

如何解决这个问题
  • 使用本地编译器构建本地MsgCreator,这意味着该工具可以在您的构建平台上运行
  • 更新..../xalan-c-1.11/c/src/xalanc/Utils/MsgCreator/Malefile.in中的代码。 $(XSL_BIN_DIR)/MsgCreator->$(XSL_BIN_TMP_DIR)/MsgCreator
  • 将XSL_BIN_TMP_DIR导出到本地MsgCreator刀具路径
  • 导出LD_LIBRARY_PATH以添加MsgCreator依赖库。这些库可以通过使用本地编译器编译Xerces-C(版本必须大于3.0)生成
  • 交叉编译Xalan,一切都会顺利的

  • 感谢您快速回答,我将尝试设置qemu。
    ../../../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
    
    checking whether we are cross compiling... yes