我正在为 Eclipse 中的 autotools 插件和我下载的一些 C++ 项目而苦苦挣扎。
我的目标包括对 arm 处理器进行交叉编译,因此该项目已经配置为使用 autotools,但是当我尝试交叉编译时出现以下问题
In file included from /usr/include/c++/4.6/bits/stl_algo.h:61:0,
from /usr/include/c++/4.6/algorithm:63,
from dtntracepath.cpp:17:
/usr/include/c++/4.6/cstdlib:119:11: error: ‘::malloc’ has not been declared
我已经检查了我的项目的配置输出并注意到了这一点
...
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... no
checking for memset... yes
...
我知道如何通过添加选项通过 linux 终端修复它
export ac_cv_func_malloc_0_nonnull=yes
但不能通过 Eclipse 或 autotools 插件,因为项目的设置不可用。你能启发我吗?
亲切的问候,
提前致谢
PS:我在 autotools 插件中设置的参数如下:
-Command: configure CFLAGS="-m32" LDFLAGS="-m32" CC=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-gcc CC=c99
-All options : --host=arm-mv5sft-linux-gnueabi --build=i686-linux --target=arm-mv5sft-linux-gnueabi --with-sysroot=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/arm-mv5sft-linux-gnueabi/
编辑:
我已经使用以下配置尝试了 ldav1s 建议
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"
我收到这些错误
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
EDIT2 重新安装eclipse后,第一版的++错误消失了,现在如果我使用以下配置
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 --build=i686-linux --target=arm-mv5sft-linux-gnueabi
它正在正确编译,我看到了一些 arm/le 输出,但是我收到了与其中一个库有关的错误
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 ****