我有一个程序(特别是我的
SO DevDays Countdown app challenge的条目),它依赖于几个动态库,即libSDL,libSDL_ttf等.我通过MacPorts将这些库安装在/ opt / local / lib下,许多人不会安装这些库(有些可能安装了它们,但是不在那个位置).
如何分发我的程序,以便没有安装这些库的人可以开箱即可运行?显然,我必须分发各种.dylib文件,但这样做不够.动态加载器仍然查找安装在我们安装的位置的库.有没有办法告诉动态加载器查看可执行文件的当前目录,就像Windows使用DLL一样?人们不应该修改任何环境变量(例如DYLD_LIBRARY_PATH),因为我再次希望这可以开箱即用.
正如你所说,你不使用Xcode,所以有点困难.以下是我的优先顺序的选项:
原文链接:https://www.f2er.com/javaschema/281699.html>切换到Xcode.使用框架. SDL库已经可以作为框架使用了,我已经看到超过几个商业游戏,应用程序包中有一个libsdl.framework.>使用框架,但保留您的Makefile.下载SDL库的框架版本(或自己构建),并使用-framework链接器标记与它们链接.使用您的应用程序分配框架,或者不要告诉用户将它们放在〜/ Library / Frameworks或/ Library / Frameworks中.我不会打扰一个安装程序为此.>与SDL静态链接在Makefile中,您必须列出静态库的路径,而不是使用-l标志,例如运行“ld blah blah /opt/local/lib/libsdl.a”.我没有办法告诉-l喜欢静态的共享库,相信我,我已经看了.