mac上的python-config ldflags

时间:2009-12-18 16:15:48

标签: python macos linker ld

我在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或者自己构建的)?

1 个答案:

答案 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文件   之前链接路径上的目录   移动到下一个目录。