在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来打印它的输出吗?
答案 0 :(得分:2)
GCC有驱动程序,如gcc
,g++
和gfortran
,它们调用语言编译器(名为cc1
,cc1plus
和{{1} })生成汇编代码,然后调用汇编程序创建目标文件,然后调用链接器(好吧,这最后一步有点复杂,因为它涉及确定目标文件和库的正确顺序,这是由一个程序名为f951
)。
因此,Apple向GCC的驱动程序添加了一个“驱动程序驱动程序”,它可以处理多个collect2
选项,并为每个arch产生驱动程序进程。这些进程同时运行,它们的输出有时可能会混淆。
答案 1 :(得分:1)