2015-09-15 53 views
7

我編譯從官方公報網站上的uwsgi版本xyzz.ww編譯插件,我編譯的命令uwsgi從官方文檔爲Uwsgi

建議然後我編譯插件建議用Python中的命令官方文檔時,錯誤輸出我得到的是這樣的:

>[email protected]:~/tmp/uwsgi-xx.yy.zz.ww$ PYTHON=python3.4 ./uwsgi --build-plugin "plugins/python python34" 
*** uWSGI building and linking plugin from plugins/python *** 
[gcc -pthread] python34_plugin.so 
/usr/bin/ld: /usr/local/lib/python3.4/config-3.4m/libpython3.4m.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/python3.4/config-3.4m/libpython3.4m.a: error adding symbols: Bad value 
collect2: error: ld returned 1 exit status 
*** unable to build python34 plugin *** 

替代使用uwsgi不使用PIP 3安裝uwsgi從源代碼編譯它,在這種情況下,插件文件夾插件/ Python的編譯/python_plugin.o但無法找到它。我使用virtualenv作爲項目,插件編譯必須位於root文件夾或lib文件夾中的virtualenv環境內?

+0

您使用的是哪個版本的ubuntu?如果是14.04,你可以直接使用'apt-get install uwsgi-plugin-python3',並將其作爲屬性'plugin = python3'放在你的app conf文件中。 – danigosa

回答

1

老問題,但在這裏備查是我做了什麼:

在/ usr/bin中/ LD:/usr/local/lib/python3.4/config-3.4m/libpython3.4m。 a(abstract.o):在創建共享對象時不能使用針對`_Py_NotImplementedStruct'的重定位R_X86_64_32S; 重新編譯-fPIC

此行意味着你需要一個Python構建旗:-fPIC,所以我卸載了Python版本,並打開這個標誌重建。

出口前旗建立這樣的:

export CFLAGS="$CFLAGS -fPIC" 

相反,如果你使用pyenv

env PYTHON_CFLAGS=-fPIC pyenv install 3.5.x 

現在用這條巨蟒,你可以編譯一個Python插件:

python uwsgiconfig.py --plugin plugins/python core python35