3

我正在尝试在solaris 10上使用gcc(v4.7)编译msgpack-python python模块。安装的python是2.6.8。Distutils 会自动选择我想从命令中删除的错误编译器选项 (-xcode=pic32)。

distutils 整理的完整命令是:

/opt/csw/bin/gcc-4.7 -DNDEBUG -O -O2 -pipe -mcpu=v9 -I/opt/csw/include -xcode=pic32 -I/opt/csw/include/python2.6 -c msgpack/_msgpack.c -o build/temp.solaris-2.10-sun4v-2.6/msgpack/_msgpack.o

但产生此错误:

gcc-4.7:错误:语言代码=pic32 无法识别

然后失败。如果我删除该 -xcode=pic32 选项并手动执行上述命令,则模块编译成功。

不过,我需要能够以自动化的方式执行此操作(使用 buildfarm 来生成包)。问题是,在不修改或更改当前 python 或 distutils 的情况下,有没有办法“删除”distutils 正在拾取的这个选项,所以我可以让 python setup.py 进程适当地构建模块(即没有 pic32 选项)?

谢谢

4

2 回答 2

1

不要用那个 gcc 编译。-xcode=pic32是 Sun Studio 编译器命令行参数。即使编译OK,它也会导致链接问题。使用可以理解此类参数的SUN CoolTools 编译,或使用Oracle Solaris Studio for SPARC。gcc

一些提示:

  1. GCC 为 SPARC 生成非常慢的代码,这就是 SUN 创建 Cool Tools 的原因。
  2. 当您坚持使用 gcc-4.7 时,您不必删除-xcode=pic32,而是更改为-m32 -fpic
  3. 为了获得成熟的 OSS 工具设置,我使用pkgsrc与 Studio Express 一起编译到特定的 CPU(-xtarget=native
于 2012-07-14T21:49:36.900 回答
0

您还可以通过设置以下环境变量来找到运气:

export CC=$gcc_dir_path  # Example: /usr/bin/gcc
export CXX=$gxx_dir_path  # Example: /usr/bin/g++
export CFLAGS=''
export CPPFLAGS=''
export CXXFLAGS=''
export LDFLAGS=''

注意:未设置的环境变量和设置为空的环境变量之间存在差异。当我的*FLAGS环境变量未设置时,我使用 Python 包构建了错误。gcc(使用选项调用-xO2是原因。)设置为空就可以了。

于 2015-04-17T07:38:43.713 回答