2012-05-07 93 views
3

我试图编译其中有一些用Cython生成C代码的Python包,我运行到:设置默认的编译器

gcc: error: x86_64: No such file or directory 

这表明海合会编译器太近了,所以不再支持-arch。我试着设置CC=/usr/bin/gcc之前python setup.py install,而这个工程的主要编译命令,而不是命令,使共享对象库:

% setenv CC /usr/bin/gcc 
% python setup.py install 
running install 
running build 
running build_py 
running build_ext 
skipping 'hyperion/util/integrate_core.c' Cython extension (up-to-date) 
building 'hyperion.util.integrate_core' extension 
/usr/bin/gcc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -DNDEBUG -g -O3 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -I/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages/numpy/core/include -I/Library/Frameworks/EPD64.framework/Versions/7.2/include/python2.7 -c hyperion/util/integrate_core.c -o build/temp.macosx-10.5-x86_64-2.7/hyperion/util/integrate_core.o 
gcc -bundle -undefined dynamic_lookup -g -arch x86_64 -arch x86_64 build/temp.macosx-10.5-x86_64-2.7/hyperion/util/integrate_core.o -o build/lib.macosx-10.5-x86_64-2.7/hyperion/util/integrate_core.so 

gcc: error: x86_64: No such file or directory 
gcc: error: x86_64: No such file or directory 
gcc: error: unrecognized option ‘-arch’ 
gcc: error: unrecognized option ‘-arch’ 
error: command 'gcc' failed with exit status 1 

是否有指定编译器的绝对路径使用方式用于链接?

回答

0

我已经做到了,像这样:

CXX="/Developer/usr/bin/g++-4.0" CC="/Developer/usr/bin/gcc-4.0" python setup.py build

,但我不知道这是 “正确的”;它只是安装scipy/numpy时需要使用的长命令的一部分。

(全指令I最终使用是 LD_LIBRARY_PATH=/Developer/SDKs/MacOSX10.6.sdk/usr/lib/ FFLAGS="-m64" CFLAGS="-arch x86_64 -I/Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/ -I/usr/local/include/freetype2 -I/usr/X11/include -L/usr/X11/lib" LDFLAGS="-Wall -undefined dynamic_lookup -bundle -lpng -arch x86_64" CXX="/Developer/usr/bin/g++-4.0" CC="/Developer/usr/bin/gcc-4.0" python setup.py build

1

使用LDSHARED变量:LDSHARED='/usr/bin/gcc -shared'

它被埋在sysconfig模块中。试试这个:

>>> from sysconfig import get_config_vars 
>>> get_config_vars('CC', 'CXX', 'LDSHARED')