【问题标题】:Compiling C++ SDL on macosx在 macosx 上编译 C++ SDL
【发布时间】:2013-09-03 14:41:57
【问题描述】:

我按照此处的指南在 Mac OSX 8.4 上安装了 SDL2: https://*.com/a/12473310

我不得不将前缀“/home/user/SDL”更改为“/Users/agargara/programming/SDL/”,因为 /home 在 OSX 8.4 中只是一个占位符——没有权限在该目录中创建文件夹有点黑客行为。

我能够使用以下内容编译测试文件:

g++ Main.cpp -o main -I/Users/agargara/programming/SDL/include/SDL2 -L/Users/agargara/programming/SDL/lib -lSDL2main -lSDL2 -framework OpenGL -framework Cocoa

但是,运行会出现以下错误:

dyld: Library not loaded: /home/user/SDL/lib/libSDL2-2.0.0.dylib
  Referenced from: /Users/agargara/programming/SDL-tut/01_hello_SDL/./hello
  Reason: image not found
Trace/BPT trap: 5

我认为这是因为在某个地方,库仍在尝试使用不正确的前缀 /home/user/。我需要改变什么来解决这个问题?

【问题讨论】:

  • 为什么不在/home/user/SDL放一个符号链接?
  • 感谢 Paul,这可能是一种解决方案。但是,目录 /home 已被弃用,因此我无法在不更改某些设置的情况下创建任何文件。幸运的是,我意识到需要将 SDL2 安装到 /Libraries/Frameworks 中。

标签: c++ macos g++ sdl


【解决方案1】:

好吧,再摆弄一下,我很幸运,回答了我自己的问题!我需要下载 OSX 的开发库并将其复制到 /Library/Frameworks/ 中,而不是从源代码编译。

一旦完成,正确的编译方法就是:

g++ Main.cpp -o main -I/Library/Frameworks/SDL2.framework/Headers -framework SDL2 -framework Cocoa

【讨论】: