我从Internet上下载了一些C ++源代码项目,其中包含了autotools功能。所以,我想将它交叉编译为我有编译器的arm设备;但是,我不知道如何在autotools参数上指示arm编译器,我已经尝试使用CC = pathOfArmCompiler设置配置选项到我的编译器的路径但是它不起作用。
你有什么建议怎么做?我正在阅读更改configure.ac存档,但我不确定这是否是更好的解决方案。
提前致谢,
此致
编辑:
我尝试过Jack Kelly使用以下配置
configure CC=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-gcc CXX=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-g++ CFLAGS="-m32" LDFLAGS="-m32"--host=arm-mv5sft-linux-gnueabi --with-sysroot=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/arm-mv5sft-linux-gnueabi/
我收到此错误
Command-line environment variables:
LDFLAGS="-m32" LDFLAGS="-m32" CC="/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-gcc" CXX="/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-g++"
sh -c /home/t/ibrdtn/ibrdtn-tools-0.8.0/configure ++ --host=arm-mv5sft-linux-gnueabi --with-sysroot=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/arm-mv5sft-linux-gnueabi/
configure: WARNING: you should use --build, --host, --target
configure: WARNING: invalid host type: ++
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-mv5sft-linux-gnueabi-strip... no
checking for arm-mv5sft-linux-gnueabi-strip... no
checking for strip... strip
configure: WARNING: using cross tools not prefixed with host triplet
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
Invalid configuration `++': machine `++' not recognized
configure: error: /bin/bash ./config.sub ++ failed
configure: error: /bin/bash ./config.sub ++ failed
checking build system type...
Configuration failed with error
编辑2: 重新安装eclipse之前的错误已经消失。但现在有了这个配置
./configure --build=i686-linux --host=arm-mv5sft-linux-gnueabi
--target=arm-mv5sft-linux-gnueabi
CC=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-gcc
CXX=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-g++
--with-gnu-ld--with-sysroot=/h/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/arm-mv5sft-linux-gnueabi
CFLAGS="-m32" LDFLAGS="-m32" --prefix=/ibrdtn-svn/dtnCross/
分配配置输出我得到了这个
checking for arm-mv5sft-linux-gnueabi-g++... no
checking for arm-mv5sft-linux-gnueabi-c++... no
checking for arm-mv5sft-linux-gnueabi-gpp... no
checking for arm-mv5sft-linux-gnueabi-aCC... no
checking for arm-mv5sft-linux-gnueabi-CC... no
checking for arm-mv5sft-linux-gnueabi-cxx... no
checking for arm-mv5sft-linux-gnueabi-cc++... no
checking for arm-mv5sft-linux-gnueabi-cl.exe... no
checking for arm-mv5sft-linux-gnueabi-FCC... no
checking for arm-mv5sft-linux-gnueabi-KCC... no
checking for arm-mv5sft-linux-gnueabi-RCC... no
checking for arm-mv5sft-linux-gnueabi-xlC_r... no
checking for arm-mv5sft-linux-gnueabi-xlC... no
...
make[3]: Entering directory `/home/t/ibrdtn/ibrcommon-0.8.0/ibrcommon/net'
CXX tcpclient.lo
CXX tcpserver.lo
CXX tcpstream.lo
CXX udpsocket.lo
CXX MulticastSocket.lo
CXX UnicastSocket.lo
CXX stopandwait.lo
CXX vsocket.lo
CXX vinterface.lo
CXX vaddress.lo
CXX LinkManager.lo
In file included from LinkManager.cpp:16:
../../ibrcommon/net/NetLinkManager.h:19:29: error: netlink/netlink.h: No such file or directory
../../ibrcommon/net/NetLinkManager.h:20:26: error: netlink/attr.h: No such file or directory
make[3]: *** [LinkManager.lo] Error 1
make[3]: Leaving directory `/home/t/ibrdtn/ibrcommon-0.8.0/ibrcommon/net'
make[2]: Leaving directory `/home/t/ibrdtn/ibrcommon-0.8.0/ibrcommon'
make[2]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/t/ibrdtn/ibrcommon-0.8.0/ibrcommon'
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1
**** Build Finished ****
所以我认为编译器不正确,你知道可能的原因吗?
提前致谢,
答案 0 :(得分:2)
在交叉编译自动提交的软件包时,您需要考虑三个configure
选项:--host
,--build
和--target
。
--host
:二进制文件将在哪个平台上运行?--build
:正在进行编译的平台是什么?--target
:构建编译器时,它应该以什么平台为目标?(是的,这意味着可以使用sparc机器编译在x86上运行但是以ARM为目标的编译器。这就是加拿大十字架。)
这些选项的参数采用ARCH-VENDOR-OS-LIBC
的(一般)形式,但有时会省略一个或多个部分。一些例子:
i686-pc-linux-gnu
i586-pc-mingw32
arm-mv5sft-linux-gnueabi
这些被用作被调用的任何工具的前缀(编译器,链接器,ar
,AC_CHECK_TOOL
脚本中configure
找到的任何内容。
所以--host
的论点是arm-mv5sft-linux-gnueabi
,但是--build
呢?
嗯,configure
通常可以猜测(通过调用名为config.guess
的辅助脚本),所以请尝试以下方法:
./configure \
--host=arm-mv5sft-linux-gnueabi \
PATH="/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2pi/bin:$PATH"