【问题标题】:python-config ldflags on macmac上的python-config ldflags
【发布时间】:2009-12-18 16:15:48
【问题描述】:

我在 OS X 10.6.2 上遇到python-config --ldflags 的问题。

使用我的非系统 python.org python 安装:

robin-mbp:~ robince$ which python
/Library/Frameworks/Python.framework/Versions/2.5/bin/python
robin-mbp:~ robince$ python-config --ldflags
-L/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config -ldl -lpython2.5

但是如果我用上面的 LDFLAGS 构建一个嵌入 Python 的 c 程序,它会导致系统 python 被嵌入。似乎 -lpython2.5 在 -L 路径中的那个之前首先选择了系统 python。

到目前为止,我让它工作的唯一方法是使用

LDFLAGS=-F/ -framework Python

但是在分发方面,我真的很希望能够使用 python-config。

导致库搜索路径无法按预期工作的原因是什么?根据手册页 -L 路径应该在默认路径之前搜索。

是否有任何类似于“忘记默认搜索路径并仅搜索使用 -L 指定的路径”的选项,我可以将其添加到 python-config 输出中以使其正常工作?

或者有什么方法可以从路径上的任何 Python 中提取工作框架标志(这适用于用户正在使用的任何内容,即系统、python.org、macports 或自己构建的)?

【问题讨论】:

    标签: python macos linker ld


    【解决方案1】:

    很抱歉回答我自己的问题,但我在 pythonmac-sig 邮件列表上也得到了惊人的及时回复,我也问了。这是当前 python 的一个错误:http://bugs.python.org/issue7541

    建议的解决方法:

    最简单的解决方法是打开一个 终端窗口并执行 以下命令:

    CD /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config ln -s libpython2.5.a libpython2.5.dylib

    这将确保 OSX 链接器 知道 libpython 是共享的 库和指向该库的链接。经过 默认情况下,OSX 链接器搜索 .dylib 在整个链接器路径和 然后才查找 .a 文件。

    编辑:进一步更新:

    如果您可以在 您可以添加的构建系统 -Wl,-search_paths_first 给 LDFLAGS 在 OSX 上,这可确保链接器 在中查找 .dylib 和 .a 文件 之前链接路径上的一个目录 移动到下一个目录。

    【讨论】:

    • 如果您的问题现已解决,您可以接受自己的答案。
    • @ephemient 两天没有! (所以当我尝试时它会告诉我)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多