SDL在OSX Lion上将错误与终端/ g ++相关联

时间:2012-07-19 23:13:02

标签: c++ compilation terminal osx-lion sdl

今天早上我在使用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而不是文本编辑器和终端。谢谢。

2 个答案:

答案 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.alibSDL.so,在命令行指定的搜索路径中的任何位置或编译为gcc的默认值
    • gcc manual: link options
  • 选项-L(大写字母)将目录添加到查找-l请求的库时使用的搜索路径
    • 完整的命令行g++ sdltest.cpp -o sdltest -L/opt/local/lib -lSDL将允许g ++找到/opt/local/lib/libSDL.so(如果存在),例如
    • gcc manual: directory options