C++ 交叉编译错误“;arm-none-eabi-g++;找不到输入符号";

C++ 交叉编译错误“;arm-none-eabi-g++;找不到输入符号";,c++,c,linux,gcc,C++,C,Linux,Gcc,我对交叉编译有一个问题 #include <stdio.h> int main() { printf("hello\n"); return 0; } 这是编译器版本 $arm-linux-gnueabi-g++-v 使用内置规格。 COLLECT_GCC=/home/kang/Utils/arm-2013.05/bin/arm-none-eabi-g++ COLLECT_LTO_WRAPPER=/home/kang/Utils/arm-2013.05/bin/。/

我对交叉编译有一个问题

#include <stdio.h>

int main()
{
    printf("hello\n");
    return 0;
}
这是编译器版本

$arm-linux-gnueabi-g++-v

使用内置规格。 COLLECT_GCC=/home/kang/Utils/arm-2013.05/bin/arm-none-eabi-g++ COLLECT_LTO_WRAPPER=/home/kang/Utils/arm-2013.05/bin/。/libexec/gcc/arm-none-eabi/4.7.3/LTO-WRAPPER 目标:arm none eabi配置有: /scratch/jbrown/2013.05-arm-eabi-release/src/gcc-4.7-2013.05/configure --build=i686 pc linux gnu--host=i686 pc linux gnu--target=arm none eabi--enable threads--disable libmudflap--disable libssp--disable libstdcxx pch--enable extra sgxxlite multilibs--gnu-as--gnu-ld--specs='%{save temps:-fverbose asm}-D_ucs_SOURCERYGXX_-MAJ_u=2013--D_ucs_usourcegxx_xx_xx_xx_xx_xx_xx_xx_xx_-MIN=5--D_u_u-CS_xx_xx_xx_xx_xx_xx_{!fno移除局部静态:-fremove local statics}%{O*:%{O | O0 | O1 | O2 | Os:;:%{!fno移除局部静态: -fremove局部静态}}“启用语言= C,C++ -禁用共享-启用LTO -带有PkgValue=“Suffy CoffultLite 2013.05-23”-BugURL= =禁用NLS前缀= /opt/CODESUS(带有头= =)-用SysRooSt/Opt/CooSooStudiy/ARM EABI——用构建SysSoRoS//Brace/JBRAN/2013.05-ARM-EABI-Realase/Atdi/ARM-非EABI --gmp=/scratch/jbrown/2013.05-arm-eabi-release/obj/pkg-2013.05-23-arm-none-eabi/arm-2013.05-23-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --使用mpfr=/scratch/jbrown/2013.05-arm-eabi-release/obj/pkg-2013.05-23-arm-none-eabi/arm-2013.05-23-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --使用mpc=/scratch/jbrown/2013.05-arm-eabi-release/obj/pkg-2013.05-23-arm-none-eabi/arm-2013.05-23-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --使用ppl=/scratch/jbrown/2013.05-arm-eabi-release/obj/pkg-2013.05-23-arm-none-eabi/arm-2013.05-23-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --使用主机libstdcxx='-static libgcc-Wl,-Bstatic,-lstdc++,-Bdynamic-lm'-使用cloog=/scratch/jbrown/2013.05-arm-eabi-release/obj/pkg-2013.05-23-arm-none-eabi/arm-2013.05-23-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --使用libelf=/scratch/jbrown/2013.05-arm-eabi-release/obj/pkg-2013.05-23-arm-none-eabi/arm-2013.05-23-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --禁用libgomp--禁用libitm--启用毒药系统目录--使用构建时工具=/scratch/jbrown/2013.05-arm-eabi-release/install/arm-none-eabi/bin --使用构建时工具=/scratch/jbrown/2013.05-arm-eabi-release/install/arm-none-eabi/bin 线程模型:单一gcc版本4.7.3(Sourcery CodeBench Lite 2013.05-23)


您下载了错误的工具链

arm-linux-gnueabi-g++
是使用用于裸机程序的
arm-none-eabi
构建的。它不包含libc,即此工具链中不存在标准库(glibc或eglibc)

因此,您需要下载
arm-none-linux-gnueabi
工具链(即
arm-2013.05-24-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
,而不是
arm-2013.11-24-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

要验证上述内容,请键入:

cd /home/kang/Utils/arm-2013.05/arm-none-eabi 
在这里,您将只找到
bin include lib share
,而没有
libc
目录

下载
arm-2013.05-24-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
;在这里您可以找到一个文件夹
arm-2013.05/arm-none-linux-gnueabi/libc

您还可以通过以下方式进行验证:

arm-linux-eabi-g++ -print-sysroot and 
arm-none-linux-gnueabi-g++ -print-sysroot

另请参阅前面的问题:

您下载了错误的工具链

arm-linux-gnueabi-g++
是使用用于裸机程序的
arm-none-eabi
构建的。它不包含libc,即此工具链中不存在标准库(glibc或eglibc)

因此,您需要下载
arm-none-linux-gnueabi
工具链(即
arm-2013.05-24-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
,而不是
arm-2013.11-24-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

要验证上述内容,请键入:

cd /home/kang/Utils/arm-2013.05/arm-none-eabi 
在这里,您将只找到
bin include lib share
,而没有
libc
目录

下载
arm-2013.05-24-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
;在这里您可以找到一个文件夹
arm-2013.05/arm-none-linux-gnueabi/libc

您还可以通过以下方式进行验证:

arm-linux-eabi-g++ -print-sysroot and 
arm-none-linux-gnueabi-g++ -print-sysroot
另请参阅上一个问题:

我使用的是arm-linux-gnueabi-g++。它是从mentor graphics下载的

这是命名错误的。您的所有输出都表明Mentor Graphics打包了一个
arm none gnueabi
工具链,并错误地将其命名为
arm linux gnueabi
(它甚至不符合命名约定)

抱歉,我输入的编译器错误。我正在使用arm-none-eabi-g++

为自己准备一个版本的
armnonelinuxgnueabi
工具链(即针对GNU/linux而不是EABI)

这一个将包含与Linux操作系统接口的GCC运行时。您现在缺少的所有功能都是该接口的一部分

我使用的是arm-linux-gnueabi-g++。它是从mentor graphics下载的

这是命名错误的。您的所有输出都表明Mentor Graphics打包了一个
arm none gnueabi
工具链,并错误地将其命名为
arm linux gnueabi
(它甚至不符合命名约定)

抱歉,我输入的编译器错误。我正在使用arm-none-eabi-g++

为自己准备一个版本的
armnonelinuxgnueabi
工具链(即针对GNU/linux而不是EABI)


这一个将包含与Linux操作系统接口的GCC运行时。您现在缺少的所有功能都是该接口的一部分。

您能稍微整理一下这个答案吗?我认为这是不对的;
arm none gnueabi
将是裸机,但在
arm中提到的“Linux”中