Gcc 为什么交叉编译器有两个阶段的编译?
我目前试图了解交叉编译器是如何工作的。我对两阶段编译器编译过程有点困惑 据我所知,以下程序适用:Gcc 为什么交叉编译器有两个阶段的编译?,gcc,dependencies,cross-compiling,Gcc,Dependencies,Cross Compiling,我目前试图了解交叉编译器是如何工作的。我对两阶段编译器编译过程有点困惑 据我所知,以下程序适用: 为目标体系结构编译bintutils 编译GCC(第1阶段) 编译newlib/eglibc/。。。与海湾合作委员会 使用libc编译GCC(第2阶段) 为什么会涉及第二阶段?难道我不能用一些标志(如-lc)调用第一阶段编译器来包含libc吗?我不知道gcc为什么有这么复杂的构建过程。我的基于clang/LLVM的ELLCC()跨工具链项目构建如下: 编译编译器(使用gcc或网站上提供的ELLC
- 为目标体系结构编译bintutils
- 编译GCC(第1阶段)
- 编译newlib/eglibc/。。。与海湾合作委员会
- 使用libc编译GCC(第2阶段)
为什么会涉及第二阶段?难道我不能用一些标志(如
-lc
)调用第一阶段编译器来包含libc吗?我不知道gcc为什么有这么复杂的构建过程。我的基于clang/LLVM的ELLCC()跨工具链项目构建如下:
顺便说一句,ELLCC目前支持Linux和裸机执行环境下的ARM、Microblaze、Mips、PowerPC和x86目标。gcc附带的一些库需要libc。与LFS相关:Richard:我在Windows上构建简单的“hello world”程序时遇到了问题。我得到“ecc.exe:error:cannotexecutecommand:cannotexecuteprogram'C:\ellcc\ellcc\bin/ecc ld.exe'Unknown error”Raman:显然这与文件的卸载方式有关:啊,是的。这就解决了问题。我注意到它在Windows上生成的是一个静态二进制文件。是否有动态链接到各种运行时的东西,如CRT等?对不起,目前我只制作静态库。最后我想补充一点,所以请支持我。C库musl确实支持动态,我只是还没来得及用这种方式构建它。理查德:另一个问题。所以,当我在Windows上使用此编译器构建时,您链接到哪个C库?