我正在研究使用arm-linux-xxx构建内核,但使用arm-elf-xxx构建用户应用程序的uClinux系统。
如果应用程序旨在在Linux上运行,使用arm-linux-xxx构建所有内容是否更好?
在整个uClinux构建配置中,如何设置该选项?
我正在研究使用arm-linux-xxx构建内核,但使用arm-elf-xxx构建用户应用程序的uClinux系统。
如果应用程序旨在在Linux上运行,使用arm-linux-xxx构建所有内容是否更好?
在整个uClinux构建配置中,如何设置该选项?
您可以运行arm-linux-gcc -v
和arm-elf-gcc -v
来查看这两个版本的gcc之间的一些差异(例如目标体系结构/语言)。
ELF是Linux和许多其他操作系统使用的二进制格式:
ELF格式已经在许多类Unix操作系统中取代了旧的可执行文件格式,如a.out和COFF,例如Linux、Solaris、IRIX、FreeBSD、NetBSD、OpenBSD、DragonFly BSD、Syllable和HP-UX(除了继续使用SOM的32位PA-RISC程序)。ELF还在非Unix操作系统中得到了一些采用,例如基于Itanium的OpenVMS版本以及面向x86计算机的BeOS修订版4及更高版本(其中它取代了可移植可执行文件格式;PowerPC版本仍然使用首选可执行文件格式)。PlayStation Portable、PlayStation 2、PlayStation 3、Wii和GP2X控制台也使用ELF。AmigaOS 4和MorphOS也在PowerPC机器上运行,使用ELF。在Amiga平台上,ELF可执行文件已经取代了先前在配备PPC处理器扩展卡的Amiga上使用的EHF(扩展Hunk格式)。Symbian OS v9使用基于ELF文件格式的E32Image[3]格式。我记得在某个时候,中间那一部分似乎并不重要。正如已经提到的,Elf是标准的文件格式,你无论如何都要使用它,并且无论二进制名称如何都会得到它。更重要的可能是调用约定,我不知道当调用共享库函数时,您是否必须使您的调用约定匹配,或者它是否在其他地方处理。