2

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

使用我的非系统 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 的 ac 程序,则会导致系统 python 被嵌入。似乎 -lpython2.5 在 -L 路径中的那个之前首先选择了系统 python。

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

LDFLAGS=-F/ -framework Python

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

阻止它按预期工作的库搜索路径是怎么回事?根据手册页 -L 路径应该在默认路径之前搜索。

是否有任何选项可以添加到 python-config 输出以使其正常工作?

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

4

1 回答 1

2

很抱歉回答我自己的问题,但我在 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 文件。

编辑:进一步更新:

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

于 2009-12-18T16:33:55.243 回答