开发者社区> 问答> 正文

在OSX上指定框架版本

我正在编译一个嵌入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框架的正确版本编译该程序,而不管系统上安装的任何其他版本。

谢谢。

展开
收起
祖安文状元 2020-02-23 16:14:45 597 0
1 条回答
写回答
取消 提交回答
  • 首先尝试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管理,因此,您所做的任何更改充其量只能被下一次擦除System Update,最坏的情况是破坏您的系统。在这种情况下,由于链接可能仅在这种情况下使用,即链接嵌入式库,因此可能不会有太大的不同Current。如果您确实很挑剔,则可以考虑在完成后恢复原始值。

    2020-02-23 16:14:54
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载