Mac .app在Lion上的第三方库的函数调用中失败。但是从.app / Contents / MacOs / executable运行时运行

时间:2012-03-26 18:53:36

标签: macos osx-lion

我正在尝试在Mac Lion上运行我们的应用程序。应用程序基于Snow Leopard 10.6.8构建,使用包装制造商打包。我们动态链接到libCurl(第三方库)。在雪豹上它起作用。在Lion上安装并单击应用程序图标时,它无法调用curl_easy_perform(来自libCurl)。但是当我右键单击应用程序图标时,单击显示包内容,然后转到/Applications/MyDir/OurApp.app/Contents/MacOS/OurApp然后尝试运行该unix可执行文件,然后它就可以了。我使用otool来检查lib路径,它们看起来都是正确的。

有人可以帮助我点击.app时失败的原因吗?我认为.app是主要可执行文件的软链接。所以,如果可执行文件工作,那么.app也应该工作。

我是否必须在.app中告诉lib的路径?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

动态链接器“dyld”和相关程序(如“otool”)受环境变量的影响。环境变量可能因进程而异:Finder具有环境变量设置的唯一副本,终端窗口中的每个shell也是如此。

正如您所看到的,如果您运行“man dyld”,有许多变量可以影响这些程序的行为。

如果您在命令行中看到的行为与Finder中的行为不同,我想至少在您的终端中设置了一个特殊的链接器变量。它可能指示链接器查找与链接器默认值(或Finder使用的任何内容)不同的库的位置。

您可以从终端运行“env | sort”以查看已设置的内容。