我对OS 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被嵌入。在-L路径中的python之前,-lpython2.5似乎首先选择了系统python。
到目前为止,我唯一能让它工作的方法是
LDFLAGS=-F/ -framework Python但是当涉及到发行版时,我真的希望能够使用python-config。
库搜索路径出了什么问题,使其无法按预期工作?根据手册页,应在搜索默认路径之前搜索-L路径。
有没有类似“忘记默认搜索路径,只搜索用-L指定的路径”之类的选项,我可以添加到python-config输出中以使其正常工作?
或者,有没有办法从path上的任何Python中提取工作的-framework标志(这将适用于用户正在使用的任何东西,例如系统、python.org、macports或自己构建的)?
发布于 2009-12-19 00:33:55
很抱歉回答我自己的问题,但是我在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文件。
https://stackoverflow.com/questions/1929180
复制相似问题