我在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的程序,它会导致嵌入系统python。似乎-lpython2.5首先在-L路径中的那个之前拾取系统python。
到目前为止,我唯一可以使用它的方法是
LDFLAGS=-F/ -framework Python
但是当涉及到分发时,我真的很想能够使用python-config。
库搜索路径是如何阻止它按预期工作的?根据手册页-L路径应该在默认路径之前搜索。
是否有任何选项'忘记默认搜索路径并仅搜索使用-L'指定的路径,我可以添加到python-config输出以使其工作?
或者有没有办法从路径上的Python中提取工作框架标志(这对用户使用的任何东西都有用,即system,python.org,macports或者自己构建的)?
答案 0 :(得分: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链接器搜索a .dylib在整个链接器路径上 然后才查找.a文件。
编辑:进一步更新:
如果你可以添加特定于mac的标志 您可以添加的构建系统 LDFAGS
-Wl,-search_paths_first
在OSX上,这确保了链接器 查找.dylib和.a文件 之前链接路径上的目录 移动到下一个目录。