如何使crosstool-ng C编译器正常工作

我正在尝试使crosstool-ng与C和C一起使用.即使我在使用menuconfig时选择了C,它似乎也没有建立. gcc编译器可以按预期工作,但不能运行g

我不确定自己在做什么错,因此我们将不胜感激.

我遵循此处找到的步骤:
Building embedded ARM systems with Crosstool-NG

$arm-unknown-linux-gnueabi-cpp main.cpp -o test
arm-unknown-linux-gnueabi-cpp: main.cpp: C++ compiler not installed on this system

注意:在bin目录中找不到arm-unknown-linux-gnueabi-g.
我已经尝试过跨工具版本1.16.0和1.15.3

arm-unknown-linux-gnueabi-cpp -v
Using built-in specs.
Target: arm-unknown-linux-gnueabi
Configured with: /opt/crossArm/.build/src/gcc-4.3.2/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-unknown-linux-gnueabi --prefix=/opt/crossArm/.build/arm-unknown-linux-gnueabi/buildtools --with-local-prefix=/home/jgarvin/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot --disable-libmudflap --with-sysroot=/home/jgarvin/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot --enable-shared --with-pkgversion='crosstool-NG 1.16.0' --with-float=soft --enable-__cxa_atexit --with-gmp=/opt/crossArm/.build/arm-unknown-linux-gnueabi/buildtools --with-mpfr=/opt/crossArm/.build/arm-unknown-linux-gnueabi/buildtools --enable-target-optspace --disable-libgomp --disable-libmudflap --disable-nls --disable-multilib --enable-languages=c
Thread model: posix
gcc version 4.3.2 (crosstool-NG 1.16.0)

#include<iostream>

using namespace std;

int main(){
   cout<<"Hello World"<<endl;
return 0;
}

在我的build.log文件中,我看到C选项已打开

[DEBUG]    CT_CC_SUPPORT_CXX=y

我也在config.log中看到它:

configure:3030: $? = 0
configure:3019: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
最佳答案
从,http://briolidz.wordpress.com/2012/02/07/building-embedded-arm-systems-with-crosstool-ng/

Refine your configuration by running the menuconfig interface:

$./ct-ng menuconfig

在此步骤中,导航到C编译器菜单.然后,您可以选择C或取消选择Java,Fortran等.由于crosstool-ng只是一堆脚本和补丁文件,因此很少有开发构建会破坏事情.您始终可以从hg存储库中提取.

hg clone 07001

cd crosstool-ng

./bootstrap

make

sudo make install

这将具有最新的修复程序.我使用这种方法多次构建了具有C支持的arm交叉编译器(包括x86_64主机上的Mingw和i386的加拿大交叉).

编辑:我看到wordpress链接建议本地安装ct-ng.上面的命令进行了完整安装,将其放入/usr/local.另外,似乎OP确实尝试设置menuconfig的C选项.尝试更改sjlj值,使用最新版本的ct-ng并安装它.这为我在Ubuntu上产生了一个ARM Linux C交叉编译器. build.log输出有助于确定ct-ng是否确定某些配置不可能.

最后,邮件列表crossgcc@sourceware.org不需要订阅afaik. http://sourceware.org/ml/crossgcc/的存档可能会有所帮助.如果您仍然有问题,我相信邮件列表中的某人将能够为您提供帮助.

编辑:尝试安装最新的ct-ng,

$ct-ng arm-cortex_a15-linux-gnueabi #Alternate arm-yem-linux-gnueabi
$ct-ng menuconfig # Tweak for your processor, gcc version, etc.
$ct-ng build # Go have a coffee (or work on something else).

抱歉,您的主机编译器是由Linaro制作的.我在您的编辑中阅读过多.

转载注明原文:如何使crosstool-ng C编译器正常工作 - 代码日志