Проблемы компиляции mod_wsgi в virtualenv - PullRequest
6 голосов
/ 25 мая 2011

Я пытаюсь скомпилировать mod_wsgi (версия 3.3), Python 2.6, на сервере CentOS - но под virtualenv, но безуспешно. Я получаю сообщение об ошибке:

/ USR / бен / л.д.: /home/python26/lib/libpython2.6.a(node.o): перемещение R_X86_64_32 против `a местный символ "не может быть использован, когда создание общего объекта; перекомпилировать с -fPIC

/ дома / python26 / Библиотека / libpython2.6.a: не может прочитать символы: неверное значение

В соответствии с документами mod_wsgi о проблемах установки , возможно, что файл libpython2.6.a :

  • не там
  • не был сгенерирован с shared
  • было сгенерировано для 32-битной машины, а не для 64-битной.

Ну, файл находится в нужном месте и доступен для чтения. Я попытался перекомпилировать Python 2.6 с опцией --enable-shared, но вся компиляция взорвалась, и примерно в каждом файле была одна и та же ошибка, что libpython2.6.a было скрыто.

Я не знаю , что Python компилировал для 64-битной системы, но когда я его запустил, сделал:

import platform
print platform.platform()
>>>Linux-2.6.18-028stab070.4-x86_64-with-redhat-5.6-Final

Так как Python думает, что он на x86_64, я бы надеялся , что он скомпилирован для 64-битной системы - если у кого-то есть способ подтвердить это, я был бы признателен.

Я попытался настроить make-файл mod_wsgi как с, так и без --python = / home /[...]/ python2.6, оба пути были взорваны.

Я также пытался скомпилировать mod_wsgi вне из virtualenv, используя Python 2.4, и он работал нормально. К сожалению, это не поможет мне, если я собираюсь использовать virtualenv:)

Кто-нибудь знает, как мне заставить mod_wsgi скомпилировать в virtualenv?

Ответы [ 3 ]

8 голосов
/ 25 мая 2011

Соответствующие части документации:

http://modwsgi.readthedocs.io/en/develop/user-guides/installation-issues.html#mixing-32-bit-and-64-bit-packages

Здесь упоминается проблема -fPIC.

И

http://modwsgi.readthedocs.io/en/develop/user-guides/installation-issues.html#unable-to-find-python-shared-library

Здесь упоминается необходимость использовать LD_RUN_PATH, когда совместно используемая библиотека не может быть найдена mod_wsgi.

Дополнительную информацию о проблемах с общей библиотекой, а также о проблемах с mod_wsgi, которые могут найти неправильную установку Python, можно найти по адресу:

http://modwsgi.readthedocs.io/en/develop/user-guides/checking-your-installation.html#python-shared-library

3 голосов
/ 09 ноября 2014

Если вы собрали Python из исходников, добавьте --enable-shared для настройки. (Добавляет -fPIC)

1 голос
/ 02 октября 2012

Вы должны перекомпилировать libpython2.6.a с -fPIC для генерации объекта.

Например:

gcc -fPIC -g -c -Wall xxx.c
...