如何删除python disutils包含的编译器选项(语言代码= pic32无法识别)

时间:2012-07-13 04:12:32

标签: python gcc solaris distutils msgpack

我正在尝试使用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选项) )?

由于

2 个答案:

答案 0 :(得分:1)

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

一些提示:

  1. GCC为SPARC生成非常慢的代码,这就是SUN创建Cool Tools的原因。
  2. 当你坚持使用gcc-4.7时,你不能删除-xcode=pic32,而是更改-m32 -fpic
  3. 要获得成熟的OSS工具设置,我正在使用pkgsrc使用Studio Express编译到特定的CPU(-xtarget=native

答案 1 :(得分:0)

您也可以通过设置以下env vars找到运气:

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=''

注意:unset env var和set-as-empty env var之间存在差异。当我*FLAGS env vars未设置时,我用Python包构建了bug。 (使用选项gcc调用-xO2是原因。)设置为空是有效的。