Как собрать 32-битный Python 2.6 на 64-битной Linux? - PullRequest
8 голосов
/ 05 октября 2010

Я застрял на целый день, сейчас пытаюсь заставить Python собираться в 32-битном режиме. Я использую 64-битную машину Linux с openSUSE 11.3, у меня установлены необходимые пакеты -devel и -32bit для сборки приложений в 32-битном режиме.

Проблема со сборкой python, по-видимому, не в самом прогоне make, а в последующем запуске setup.py, вызываемом make.

Я нашел следующие инструкции для Ubuntu Linux: h ** p: //indefinitestudies.org/2010/02/08/how-to-build-32-bit-python-on-ubuntu-9-10-x86_64 /

Когда я делаю, как описано, я получаю следующий вывод:

http://pastebin.com/eP8WJ8V4

Но у меня есть -32-битные пакеты libreadline, libopenssl и т. П. установлены, но, конечно, они находятся в / lib и / usr / lib, а не в / lib64 и / usr / lib64.

Когда я запускаю двоичный файл python, полученный в результате этой сборки, я получаю:

./python
Python 2.6.6 (r266:84292, Oct  5 2010, 21:22:06) 
[GCC 4.5.0 20100604 [gcc-4_5-branch revision 160292]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Traceback (most recent call last):
  File "/etc/pythonstart", line 7, in <module>
    import readline
ImportError: No module named readline

Итак, как получить файл setup.py для наблюдения за командой LDFLAGS = -L / lib ??

Любая помощь очень ценится.

С уважением, Philipp

Ответы [ 2 ]

8 голосов
/ 17 ноября 2010

Вам нужно будет пройти соответствующий флаги для gcc и ld, чтобы сообщить компилятору компилировать и создавать 32-битные двоичные файлы.

Используйте --build и --host.

./configure --help
System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

Вам нужно использовать ./configure --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu для компиляции 32-битного Linux в 64-битной системе Linux.

Примечание: Вам все еще нужно добавить другие опции ./configure.

4 голосов
/ 08 сентября 2012

Относительно того, почему, поскольку Кирк (и, возможно, другие) удивляются, вот пример: у меня есть приложение Python с большими диктовками, содержащими легкие объекты. Это потребляет почти вдвое больше оперативной памяти на 64-битной, чем на 32-битной просто из-за указателей. Мне нужно запустить несколько экземпляров по 2 ГБ (32 бита) каждый, и дополнительная оперативная память быстро складывается. Для FreeBSD подробный рецепт для 32-битной тюрьмы здесь http://www.gundersen.net/32bit-jail-on-64bit-freebsd/

...