使用GCC / Sublime在Linux上编译SDL程序

时间:2015-05-16 03:05:12

标签: c++ c gcc sublimetext2 sdl

如何使用GCC或Sublime IDE在Linux上编译基于SDL的项目?

gcc main.cpp -o main -lSDL2

我试过这个,我只是得到了错误,这些错误似乎指的是程序没有正确地指向库,或者编译器没有识别库。在Sublime上我通过为SDL创建自己的构建系统基本上做了同样的事情,但它似乎并没有做任何事情。我可能做错了什么?

{
     "cmd" : [ "gcc", "$file", "-o", "-lSDL2" ] 
{

我希望这个问题在这个堆栈上是合适的,它可以被认为是Linux工具,但Linux和Unix堆栈并不建议编程问题,除非它们包含shell脚本。

这是我正在测试的基本Hello World(显然格式不正确,但是你明白了。):

#include <SDL2/SDL.h>

int main(int argc, char *argv[]) {
int win = 1;
SDL_Event event;

SDL_Init(SDL_INIT_EVERYTHING);

SDL_WM_SetCaption("Window", NULL);
SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
while (win) {
    SDL_WaitEvent(&event);
    if (event.type == SDL_QUIT)
        win = 0;
}
SDL_Quit();
return 0;
}

编译程序时,我使用顶部发布的GCC命令来获取这些错误:

main.cpp: In function ‘int main(int, char**)’:
main.cpp:19:37: error: ‘SDL_WM_SetCaption’ was not declared in this scope
 SDL_WM_SetCaption("Window", NULL);
                                 ^
main.cpp:20:36: error: ‘SDL_HWSURFACE’ was not declared in this scope
 SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
                                ^
main.cpp:20:49: error: ‘SDL_SetVideoMode’ was not declared in this scope
 SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
                                             ^

我还尝试使用以下命令直接指向GCC中的头文件:

gcc main.cpp -o main -l/usr/include/SDL2

我确实检查过头文件是否在usr / include / SDL2中,也许实际的库没有安装在正确的开发位置?

1 个答案:

答案 0 :(得分:1)

来自GCC的错误是由于调用SDL2中不存在的函数引起的。将之前的SDL视频呼叫更改为:

SDL_CreateWindow(
"Window",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
640,
480,
SDL_WINDOW_OPENGL
);

是在SDL 2中创建窗口的正确方法;

遵循GCC命令:

gcc main.cpp -o main -lSDL2

正确编译代码,从而使其可执行。感谢您指出@HolyBlackCat