我正在编译嵌入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框架编译该程序,而不管系统上安装的任何其他版本。
感谢。
答案 0 :(得分:0)
首先尝试在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
链接就足够了。但是,根据OP的实验,您可能还需要修改/System/Library
中的类似链接。通常,在/System/Library
中修改任何内容都是一个坏主意,因为其中的任何内容都被视为OS X的一部分并由Apple管理,因此,您所做的任何更改最多都可以被下一个{{1}删除。 1}},最糟糕的是,破坏你的系统。在这种情况下,可能不会产生很大的不同,因为System Update
链接可能只在这种情况下使用,即链接嵌入式库。如果你真的很挑剔,你可以考虑在完成后恢复原始值。