更改构建 C 编译器

问题描述 投票:0回答: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 的手册页。

python g++ aix xlc
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++
© www.soinside.com 2019 - 2024. All rights reserved.