如何在osx上创建python加载dylib

nav*_*ore 7 python macos dylib

试图从当前'.'加载共享库.dir在osx的单元测试中.

什么适用于Linux和Netbsd有一个符号链接 _mymodule.so --> ../.libs/libmymodule.so

但在osx上,python import mymodule不会找到

_mymodule.dylib --> ../.libs/libmymodule.dylib
Run Code Online (Sandbox Code Playgroud)

我试过添加

export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

到脚本env,nogo.任何帮助赞赏.

-ed

更新4/6/10:

解决了下面krunk的信息.但是只是复制或者将dylib复制到.so名称并没有完全解决它.仍然不会加载.但是告诉libtool将lib与-module标志链接起来会创建一个将加载的.so库.lib的Python版本现在可以使用了.

现在,如果我可以让perl lib工作.我正在构建swig perl,python,ruby和lua libs,这个修复只能让python和lua工作.

jky*_*yle 13

只需使用*.so作为OS X中的模块扩展.我有一个模糊的记忆,无法加载.dylib's,而事实证明这是python本身的一个问题...但我现在找不到邮件列表.

但是,请放心,即使在OS X上使用*.so也遵循标准做法.整个框架中唯一的*.dylib是libsvn_swig.

find /System/Library/Frameworks/Python.framework/Versions/2.6/ -name "*.so"

/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/X11/xcb/xcb.0.0.0.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/X11/xcb/xcb.0.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/X11/xcb/xcb.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/CoreGraphics/_CoreGraphics.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/OpenSSL/SSL.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/OpenSSL/crypto.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/OpenSSL/rand.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_appmain.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_carbon.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_inlines.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nsbezierpath.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nsbitmap.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nsfont.so
 /System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nsquickdrawview.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nsview.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/AppKit/_nswindow.so
/System/Library/Frameworks/Python.framework/Versions/2.6//Extras/lib/python/PyObjC/CFNetwork/_manual.so
Run Code Online (Sandbox Code Playgroud)

  • 作为预防措施,从不在OS X中使用静态库.它们已被"弃用",即使您专门链接到静态库,OSX也会在可能的情况下_always_链接动态库.例如,如果链接到/path/to/libfoo.a并且libfoo.dylib或libfoo.so存在于路径中的任何位置,则链接器将明亮地忽略您的请求,如果两者具有不同的表,则会导致一些非常有趣的运行时未定义符号错误. (2认同)