繁体   English   中英

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

[英]SDL linking errors with terminal/g++ on OSX lion

我在使用Sublime Text和Terminal学习C ++一段时间后使用SDL安装了OSX Lion和Xcode,但是在尝试在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而不是文本编辑器和终端。 谢谢。

您应该使用包含的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-config对SDL 1.x应该是一样的,并且还有一个“--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

你告诉g ++使用-lSDL链接libSDL,但是你不告诉它在哪里看。 使用-L/Users/snarehanger/Library/SDL或其他任何内容将SDL路径添加到命令行。


对不起,我没有意识到这一点并不清楚,所以我将Joachim的评论纳入答案。

  • 命令行选项区分大小写
  • 选项-l (小写椭圆)给出库的名称:它不指定文件名或搜索路径
    • 例如, -lSDL可以匹配libSDL.alibSDL.so ,在命令行中指定的搜索路径中的任何位置或编译为gcc的默认值
    • gcc手册:链接选项
  • 选项-L (大写字母)将目录添加到查找使用-l请求的库时使用的搜索路径
    • 完整的命令行g++ sdltest.cpp -o sdltest -L/opt/local/lib -lSDL将允许g ++找到/opt/local/lib/libSDL.so如果存在),例如
    • gcc手册:目录选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM