1

我正在尝试从 AIX 6.5 机器上的源代码构建 python 2.6.8,但有几个模块无法成功构建。在构建过程中,有一个XLC手册页跳出来卡住了。我必须按下q以结束手册页,该过程将继续。所以我在想是否是因为构建调用了默认的 XLC 编译器,我正在尝试将默认编译器更改为 g++:

make clean
CC=/bin/gcc CXX=/bin/g++ ./configure
make

但它似乎不起作用,XLC 手册页仍然弹出,并且模块无法构建。

我如何确保它将使用 g++ 而不是 XLC?谢谢。

更新

这是之后的日志CC=/bin/gcc CXX=/bin/g++ ./configure

-bash-3.2$ CC=/bin/gcc CXX=/bin/g++ ./configure
checking for --enable-universalsdk... no
checking for --with-universal-archs... 32-bit
checking MACHDEP... aix6
checking EXTRAPLATDIR... 
checking machine type as reported by uname -m... 00F63F144C00
checking for --without-gcc... 
checking for gcc... cc_r
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... no
checking whether cc_r accepts -g... yes
checking for cc_r option to accept ISO C89... -qlanglvl=extc89
checking for --with-cxx-main=<compiler>... no
checking how to run the C preprocessor... cc_r -qlanglvl=extc89 -E
checking for grep that handles long lines and -e... /opt/freeware/bin/grep
checking for egrep... /opt/freeware/bin/grep -E

我看到这条线checking whether we are using the GNU C compiler... no,这是否意味着它没有使用 gcc?

而且还在make的日志中

checking for __attribute__((visibility("hidden")))... no
cc_r: 1501-210 (W) command option t contains an incorrect subargument

在上面的日志之后,会弹出 xlc 的手册页。

4

1 回答 1

0

cc_r 编译器是 IBM 编译器。IBM C 编译器(和 C++ 编译器)有多种调用方式。xlc 是一个,_r 变体(这意味着它们链接到可重入/线程安全库)是另一个。还有 cc 和 c99 的。你问那么多干嘛?好吧,每一个都是作为常用选项的简写提供的,在这种情况下,每一个都是针对不同的语言标准的。例如,c99 支持 C99 标准。因此,仅仅因为编译器没有“xl”前缀并不意味着它不是 IBM 编译器。

请注意,显示手册页的原因是在某处调用编译器时没有任何参数或不正确的参数。这是消息的原因

cc_r: 1501-210 (W) command option t contains an incorrect subargument

-t 标志允许您交换编译器的某些部分,而您实际上很少想要这样做。它需要一个子参数,例如

cc_r -tI ...

表示您将换出 IPA 优化器的编译时阶段(通常使用 -B 指定新组件的位置)。

在您的 makefile 中的某个地方,您正在指定 -t 并极大地混淆了可怜的编译器。

顺便说一句,如果你想在make中覆盖编译器,你可以直接在makefile中通过CC、CXX和CCC变量指定它。您可以在编辑 makefile 之前在命令行上指定它来进行试验。请注意,如果您再次运行 ./configure,这些更改将会丢失。

make CC=/bin/gcc CCC=/bin/g++ CXX=/bin/g++
于 2013-03-19T16:08:38.737 回答