Встраивание Python 3.3

Я пытаюсь внедрить Python 3.3, как описано здесь.

У меня MacOS 10.8 с Python 2.7, поэтому я скачал бинарный дистрибутив версии 3.3 с python.org. Из него я получил все заголовки и «Python», который я переименовал в «python33», чтобы он не сталкивался с установленной библиотекой «Python». Складываю все в папку:

embed.c/включить python33

«файл python33» говорит:

python33 (for architecture i386):   Mach-O dynamically linked shared library i386
python33 (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64

и embed.c:

#include <Python.h>

int
main(int argc, char *argv[])
{
  Py_Initialize();
  PyRun_SimpleString("print 'test'\n");
  Py_Finalize();
  return 0;
}

Но когда я делаю "gcc embed.c -I./include -L. -lpython33", он прерывается:

ld: library not found for -lpython33

Пожалуйста, кто-нибудь знает, как его скомпилировать?


person Ecir Hana    schedule 21.02.2013    source источник


Ответы (2)


Запустите python3.3-config --cflags и вы получите необходимые cflags для вашей системы. Для ldflags команда python3.3-config --ldflags

person toasted_flakes    schedule 21.02.2013
comment
./python3.3-config --› -bash: ./python3.3-config: /Library/Frameworks/Python.framework/Versions/3.3/bin/python3.3m: плохой интерпретатор: нет такого файла или каталога - person Ecir Hana; 21.02.2013
comment
В моей системе (OS X 10.8.2 с python 3.3 из официального установщика) он работает как часы. Мой вывод: -I/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3m -I/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3m -fno-strict-aliasing - fno-common -dynamic -DNDEBUG -g -O3 -arch i386 -arch x86_64 -L/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config-3.3m -ldl -framework CoreFoundation -lpython3. 3м - person toasted_flakes; 21.02.2013
comment
У меня не установлен Python 3.3 — я только что скачал его и распаковал основную библиотеку. Когда я делаю gcc embed.c -I./include -ldl -framework CoreFoundation -L. -lpython33, он все еще говорит ld: библиотека не найдена для -lpython33 - person Ecir Hana; 21.02.2013
comment
Очевидно. Было бы неплохо установить его, прежде чем пытаться его использовать. - person toasted_flakes; 21.02.2013
comment
Я просто хочу встроить его и связать необходимые библиотеки с исполняемым файлом. Нужно ли устанавливать Python 3.3? Я подумал, что, поскольку можно запустить программу, которая содержит все свои зависимости, без фактической установки всех своих библиотек, должна быть возможность просто скопировать необходимые библиотеки из предварительно скомпилированного Python и связать их с исполняемым файлом? - person Ecir Hana; 21.02.2013
comment
Вы устанавливаете библиотеку для компиляции. - person toasted_flakes; 22.02.2013

Прежде всего, библиотека должна иметь имя в форме «libxxx.so», тогда компоновщик найдет ее с «-L. -lxxx'.

Даже в этом случае полученный исполняемый файл не будет работать, так как нужно копировать/создавать не только библиотеку, но и весь фреймворк.

Подробнее здесь: http://lists.apple.com/archives/cocoa-dev/2013/Feb/msg00522.html

person Ecir Hana    schedule 25.02.2013