首先是环境:
[code=”bash”]
iusr-mbp:~ iusr$ uname -a
Darwin iusr-mbp 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386
iusr-mbp:~ iusr$ python -V
Python 2.7
[/code]
JCC是最新的pylucene-3.1.0-1里面的那份儿。
起因是想做个小东西,预计要用到Lucene。别看我不怎么用它,可我还真嫌java干起来太麻烦…虽然做这个也想为了方便工作时用,可也算业余时间折腾吧,实在懒得一本正经地Java。所以选择了PyLucene,自然,以前也没接触过。
按照http://lucene.apache.org/pylucene/jcc/documentation/install.html上的说明,看起来不难,可惜,果不其然,到了我这里就出问题了,诶。
出问题时的输出:
[code=”bash”]
iusr-mbp:jcc iusr$ python setup.py build
running build
running build_py
writing /private/tmp/pylucene-3.1.0-1/jcc/jcc/config.py
copying jcc/config.py -> build/lib.macosx-10.5-fat3-2.7/jcc
copying jcc/classes/org/apache/jcc/PythonVM.class -> build/lib.macosx-10.5-fat3-2.7/jcc/classes/org/apache/jcc
copying jcc/classes/org/apache/jcc/PythonException.class -> build/lib.macosx-10.5-fat3-2.7/jcc/classes/org/apache/jcc
running build_ext
building ‘jcc’ extension
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch ppc -arch x86_64 -g -O2 -DNDEBUG -g -O3 -dynamiclib -D_jcc_lib -DJCC_VER=”2.8″ -I/System/Library/Frameworks/JavaVM.framework/Headers -I_jcc -Ijcc/sources -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c jcc/sources/jcc.cpp -o build/temp.macosx-10.5-fat3-2.7/jcc/sources/jcc.o -DPYTHON -fno-strict-aliasing -Wno-write-strings
/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1/as: assembler (/usr/bin/../libexec/gcc/darwin/ppc/as or /usr/bin/../local/libexec/gcc/darwin/ppc/as) for architecture ppc not installed
Installed assemblers are:
/usr/bin/../libexec/gcc/darwin/x86_64/as for architecture x86_64
/usr/bin/../libexec/gcc/darwin/i386/as for architecture i386
lipo: can’t open input file: /var/folders/Gy/Gyqx+dxCGlGc5LULCWn6Zk+++TI/-Tmp-//ccr6jC50.out (No such file or directory)
error: command ‘gcc-4.0’ failed with exit status 1
[/code]
也不知道是不是因为XCode刚更新过,给PPC的as明明是在 /usr/libexec/gcc/powerpc-apple-darwin10/4.0.1/as ,好吧,ln -s 一下到/usr/local/libexec/gcc/darwin/ppc/as 下面。结果还是不行…换了个错误:
[code=”bash”]
iusr-mbp:jcc iusr$ python setup.py build
running build
running build_py
writing /private/tmp/pylucene-3.1.0-1/jcc/jcc/config.py
copying jcc/config.py -> build/lib.macosx-10.5-fat3-2.7/jcc
copying jcc/classes/org/apache/jcc/PythonVM.class -> build/lib.macosx-10.5-fat3-2.7/jcc/classes/org/apache/jcc
copying jcc/classes/org/apache/jcc/PythonException.class -> build/lib.macosx-10.5-fat3-2.7/jcc/classes/org/apache/jcc
running build_ext
building ‘jcc’ extension
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch ppc -arch x86_64 -g -O2 -DNDEBUG -g -O3 -dynamiclib -D_jcc_lib -DJCC_VER=”2.8″ -I/System/Library/Frameworks/JavaVM.framework/Headers -I_jcc -Ijcc/sources -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c jcc/sources/jcc.cpp -o build/temp.macosx-10.5-fat3-2.7/jcc/sources/jcc.o -DPYTHON -fno-strict-aliasing -Wno-write-strings
/usr/bin/../local/libexec/gcc/darwin/ppc/as: can’t fork a new process to execute: /usr/bin/../local/libexec/gcc/darwin/ppc/as (Resource temporarily unavailable)
lipo: can’t open input file: /var/folders/Gy/Gyqx+dxCGlGc5LULCWn6Zk+++TI/-Tmp-//ccNXEZps.out (No such file or directory)
error: command ‘gcc-4.0’ failed with exit status 1
[/code]
郁闷了。折腾来折腾去都不行,直接cp过去给PPC的as也是不行,而且,真想不通为啥去为PPC编译,反正只是本地自己用。然后只好用python -v setup.py build 看了下输出,查到了编译前要调到distutils.unixcompiler.py,于是看了看源代码,看到有个_darwin_compiler_fixup方法很是可疑——敢情,这方法是会考虑ARCHFLAGS这个环境变量的——是啊!当初折腾编译、make时要折腾的若干叉叉叉FLAGS环境变量之一啊!看来后来一直都是被各种自动化工具养得白痴了,看来生命还是在于折腾。
于是乎,
[code=”bash”]
iusr-mbp:jcc iusr$ export ARCHFLAGS=”-arch x86_64 -arch i386″
[/code]
x86_64和i386怎么都够我用了~然后再python setup.py build以及python setup.py install,成功。这一来就不用考虑诸如Xapian这样的东西了,长的跟“下片儿”似的。
P.S.,distutils.unixcompiler._darwin_compiler_fixup前面的一段注释挺好玩,as usual。
This is realy cool. Thx for your solution.
You are welcome! 😀
Crab lice pediculosis pubis can cause itching in the genital areas covered with
pubic hair. buying generic viagra online safe (genqpviag.com) does generic viagra work yahoo answers
Reply Alert moderator Jennifer : 12 Sep 2014 5:17:08pm
Thanks Dr Swann for your programme. viagra online for sale reputable online pharmacy
viagra