为多个架构进行编译时,为什么Apple的gcc输出会混乱?

时间:2010-01-12 23:50:10

标签: macos gcc

在OS X的命令行上运行gcc时,我会不时收到警告和/或错误。但我总是在编译多个体系结构(使用-arch选项),并且由于gcc为每个体系结构生成了几个进程,因此错误将不断出现乱码。例如,仅运行gcc (options) -###将导致

Using built-in specs.
Target: powerpc-apple-darwin9
Configured with: /var/tmp/gcc/gcc-5493~1/src/configure --disable-checking -enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/ --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib --build=i686-apple-darwin9 --enable-werror-always --program-prefix=powerpc-apple-darwin9- --host=i686-apple-darwin9 --target=powerpc-apple-darwin9
Thread model: posix
gcc version 4.0.1 (Apple Inc. build 5493)
Using built-in specs.
 "/uTarget: powerpc-apple-darwin9
sr/Configured with: /var/tmp/gcc/gcc-5493~1/src/configure --disable-checking -enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/ --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib --build=i686-apple-darwin9 --enable-werror-always --program-prefix=powerpc-apple-darwin9- --host=i686-apple-darwin9 --target=powerpc-apple-darwin9
liThread model: posix
bexgcc version 4.0.1 (Apple Inc. build 5493)

在控制台的此复制粘贴块中,您可以看到输出混乱。看看这些台词:

 "/uTarget:
liThread model: posix
bexgcc version 4.0.1 (Apple Inc. build 5493)

它在整个输出中继续。看起来许多不同的程序同时写入终端。输出的相同混合物发生错误,警告等。它使整个输出无用且无法读取。有什么我可以传递给Apple的gcc来打印它的输出吗?

2 个答案:

答案 0 :(得分:2)

GCC有驱动程序,如gccg++gfortran,它们调用语言编译器(名为cc1cc1plus和{{1} })生成汇编代码,然后调用汇编程序创建目标文件,然后调用链接器(好吧,这最后一步有点复杂,因为它涉及确定目标文件和库的正确顺序,这是由一个程序名为f951)。

因此,Apple向GCC的驱动程序添加了一个“驱动程序驱动程序”,它可以处理多个collect2选项,并为每个arch产生驱动程序进程。这些进程同时运行,它们的输出有时可能会混淆。

答案 1 :(得分:1)