今天早上我在使用Sublime Text和Terminal学习C ++一段时间后安装了OSX Lion和Xcode以使用SDL但是在尝试在Terminal中编译时遇到了一些问题,这是我的代码。
#include "SDL/SDL.h"
int main(int argc, char* args[])
{
//Start SDL
SDL_Init(SDL_INIT_EVERYTHING);
//Quit SDL
SDL_Quit();
return 0;
}
我将SDL.framework,SDL_mixer.framework和devel-lite放入我的Library文件夹,然后使用Macports获取SDL,但后者没有用,后者没有帮助。
当我使用'g ++ sdltest.cpp -o sdltest -lSDL'时,我得到以下结果 - 'ld:找不到-lSDLcollect2的库:ld返回1退出状态'。有什么方法可以让这个工作吗?
另外,出于兴趣,如果我在格式化硬盘并重新安装OSX Lion和XCode(我正在考虑尽快完成)之后进行SDL的“全新安装”,那么最好的方法是什么关于它?我发现所有指南都遇到了错误(这对我来说肯定是一个问题,我只需要找到最容易理解的指南)并且其中很多似乎都是针对使用Xcode而不是文本编辑器和终端。谢谢。
答案 0 :(得分:2)
您应该使用包含的sdl-config(或SDL2的sdl2-config)文件来生成g ++的include和library参数。例如,因为我在OSX上通过Homebrew使用SDL2,所以:
g++ sdltest.cpp -o sdltest `sdl2-config --cflags` `sdl2-config --lib`
转换为并运行:
g++ sdltest.cpp -o sdltest -I/usr/local/include/SDL2 -D_THREAD_SAFE -L/usr/local/lib -lSDL2
SDL 1.x与sdl-config的工作方式相同,还有一个" - static-libs"选项,我的意思是:
-L/usr/local/lib -lSDL2 -lm -liconv -Wl,-framework,OpenGL -Wl,-framework,ForceFeedback -lobjc -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,IOKit -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit
答案 1 :(得分:1)
你告诉g ++使用-lSDL
链接libSDL,但你没有告诉它在哪里看。
使用-L/Users/snarehanger/Library/SDL
或其他任何内容将SDL路径添加到命令行。
抱歉,我没有意识到这一点并不清楚,所以我将Joachim的评论纳入答案。
-l
(小写字母)给出了库的名称:它没有指定文件名或搜索路径
-lSDL
可以匹配libSDL.a
或libSDL.so
,在命令行指定的搜索路径中的任何位置或编译为gcc的默认值-L
(大写字母)将目录添加到查找-l
请求的库时使用的搜索路径
g++ sdltest.cpp -o sdltest -L/opt/local/lib -lSDL
将允许g ++找到/opt/local/lib/libSDL.so
(如果存在),例如