如何在Xcode中设置dyld_library_path
我是Xcode和Mac环境的新手.我正在使用一些动态和静态库,如boost,Clucene等.我有所有的库
我想将此路径设置为应用程序的dyld_library_path.我尝试编辑XXX.plist文件
并在Xcode中设置环境变量和参数无效. 但如果我运行如下所示的shell脚本而不双击我的.dmg中的应用程序就行了 #!/bin/bash clear cd /Volumes/xxx/myapp.app/Contents/MacOS export DYLD_LIBRARY_PATH="/Volumes/xxx/myapp.app/Contents/Resources" ./myapp 我确信这不是正确的方法.每次执行我的应用程序时是否有正确的方法来设置dyld_library_path? 编辑: 解决方法
设置DYLD_LIBRARY_PATH不是解决此问题的最佳方法.它正在解决这个事实,即你错误地告诉了dyld在哪里可以找到你的库.
如果您运行otool -L MyApp.app/Contents/MacOS/MyApp,您将看到My??App想要加载的库的路径.如果在指定路径中找不到任何库,则dyld将在DYLD_FALLBACK_LIBRARY_PATH指定的位置查找库.设置DYLD_LIBRARY_PATH会导致dyld在上面返回的otool命令的路径之前的给定位置中查找库. 解决此问题的最佳方法是让应用程序指定要开始的库的正确位置,以便不需要设置DYLD_LIBRARY_PATH.为此,您需要执行以下操作: >将应用程序中捆绑的每个库的库标识符设置为@rpath相对值.您可以使用install_name_tool -id @rpath / libFoo.dylib libFoo.dylib执行此操作. 完成所有这些后,您应该能够重新运行上面提到的otool命令,并查看库的路径是否使用@rpath-relative路径.然后,您应该能够运行otool -lV MyApp.app/Contents/MacOS/MyApp并查看使用@loader_path /../ Frameworks值指定的LC_RPATH加载命令.最后,您应该能够运行您的应用程序,并在没有设置DYLD_LIBRARY_PATH的情况下查看它在其Frameworks目录中找到的库! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |