Укажите версию платформы на OSX - PullRequest
0 голосов
/ 07 октября 2010

Я компилирую программу, которая встраивает Python, в частности Python v3.1.В моей системе у меня есть несколько версий платформы Python: 3.1, 2.5, 2.6.Когда я передаю "-framework Python" в g ++ при компиляции, g ++, кажется, тянет в версии 2.6 (живет в "/ System / Library / Frameworks /") вместо версии 3.1 (живет в "/ Library / Frameworks /"), в результате чегов ошибке.Оба пути находятся в пути поиска фреймворка, как видно из попытки одной и той же компиляции в подробном режиме (передача -v в g ++).

Хотя это может показаться простым делом, я не смог найти упоминания об этом в какой-либо документации по g ++, ld или xcode.В настоящее время я выполняю успешную компиляцию, переместив /System/Library/Frameworks/Python.framework в /System/Library/Frameworks/Python.framework.moved, но это некрасивое временное решение.

Итак,Кто-нибудь знает, как лучше решить эту проблему?В частности, я хотел бы иметь возможность скомпилировать эту программу для правильной версии платформы Python, независимо от любых других версий, установленных в системе.

Спасибо.

1 Ответ

0 голосов
/ 08 октября 2010

Попробуйте сначала изменить символическую ссылку Current в среде Python в /Library/Frameworks:

$ cd /Library/Frameworks/Python.framework/Versions
$ ls -l
total 4
drwxrwxr-x  8 root  admin  340 Aug 31 02:10 2.6/
drwxrwxr-x  8 root  admin  340 Oct  6 21:56 2.7/
drwxrwxr-x  7 root  admin  306 Oct  6 14:00 3.1/
lrwxr-xr-x  1 root  admin    3 Oct  7 00:33 Current@ -> 2.7
$ sudo rm Current
$ sudo ln -s 3.1 Current

(ОБНОВЛЕНИЕ) Я надеялся, не проверяя его, что будет достаточно обеспечить ссылку Current в /Library/Frameworks, указывающую на правильную версию. Но, исходя из экспериментов ОП, вам, вероятно, потребуется изменить аналогичную ссылку и в /System/Library. Обычно плохой идеей является что-либо изменить в /System/Library, потому что все, что в нем, считается частью OS X и управляется Apple, и, таким образом, любые сделанные вами изменения могут быть в лучшем случае удалены следующими System Update В худшем случае сломай свою систему. В этом случае значение , вероятно, не будет иметь большого значения, поскольку ссылка Current, вероятно, используется только в этой ситуации, то есть при связывании встроенной библиотеки. Если вы действительно разборчивы, вы можете восстановить первоначальное значение, когда закончите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...