如何与 gcc 和 SDL_image 库链接?

Rub*_*cky 5 c gcc sdl sdl-image

我有以下脚本:

gcc -I /Library/Frameworks/SDL2.framework/Headers \
    -F /Library/Frameworks/ -framework SDL2 test.c
Run Code Online (Sandbox Code Playgroud)

成功编译了以下源代码:

#include <SDL.h>
//#include "SDL_image.h"

int init();
int loadMedia();
void close();

SDL_Window* gWindow = NULL;
SDL_Surface* gScreenSurface = NULL;
SDL_Surface* gHelloWorld = NULL;

int init()
{
    int success = 1;

    if(SDL_Init(SDL_INIT_VIDEO) < 0)
    {
        printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
    }
}

int main(int argc, char* args[])
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何使用添加的库 SDL_image 来编译它?会是这样的吗?

gcc -I /Library/Frameworks/SDL2.framework/Headers \
    -I /Library/Frameworks/SDL_image.framework/Headers \
    -F /Library/Frameworks/ -framework SDL2 test.c
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,我收到以下错误:

In file included from test.c:2:
/Library/Frameworks/SDL_image.framework/Headers/SDL_image.h:27:10:      fatal error: 
      'SDL/SDL.h' file not found 
`#include <SDL/SDL.h>`
Run Code Online (Sandbox Code Playgroud)

bla*_*ead 1

你可以这样做:

gcc -L/libs/path -I/headers/path -lSDL2 -lSDL2_image

在这种情况下,用于#include "..."包含 SDL2 标头。

如果您使用包管理器安装了 SDL2,则前面的命令将简化为:

gcc -lSDL2 -lSDL2_image

因为编译器知道 SDL2 目录的路径。在这种情况下你应该使用#include <...>.

您应该考虑为您的项目编写一个 Makefile。随着项目的增长,编译会变得更容易。