gpt4 book ai didi

c - 如何编译用 C 编写的示例 SDL 程序?

转载 作者:太空狗 更新时间:2023-10-29 17:15:53 24 4
gpt4 key购买 nike

我正在开始使用 SDL 和 C 编程。我有使用其他编程语言的经验,但在 C 中链接/编译库对我来说是新的。我正在使用 Mac 10.8 并使用自述文件中的说明安装了最新的稳定版 2.0 (./configure; make; make install)。这是我要编译的示例代码:

#include <stdlib.h>
#include <stdio.h>
#include "SDL.h"

int main(void)
{
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) != 0) {
fprintf(stderr, "\nUnable to initialize SDL: %s\n", SDL_GetError());
return 1;
}
atexit(SDL_Quit);

return 0;
}

当我尝试使用 gcc example.c 编译我的脚本时,出现错误:

example.c:3:17: error: SDL.h: No such file or directory
example.c: In function ‘main’:
example.c:7: error: ‘SDL_INIT_VIDEO’ undeclared (first use in this function)
example.c:7: error: (Each undeclared identifier is reported only once
example.c:7: error: for each function it appears in.)
example.c:7: error: ‘SDL_INIT_TIMER’ undeclared (first use in this function)
example.c:8: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘int’
example.c:8: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘int’
example.c:11: error: ‘SDL_Quit’ undeclared (first use in this function)

我尝试搜索 wiki、教程以及我能找到的任何类型的文档,但我找不到任何示例来说明如何正确编译使用 SDL 的 C 程序。

我需要做什么来编译这个程序?

最佳答案

给 C 初学者的一般提示:自上而下阅读错误日志:通常修复第一个错误会解决所有其他错误。在您的情况下,第一个错误是:

example.c:3:17: error: SDL.h: No such file or directory

正如其他人所说,您需要指示gcc 在哪里可以找到SDL.h。您可以通过提供 -I 选项来做到这一点。

要检查默认情况下 SDL.h 的安装位置,我会发出

./configure --help

在您构建libsdl 的目录中。然后寻找--prefix,Linux下默认的前缀往往是/usr/local。要编译您的示例,我会发出(在 Linux 上):

gcc example.c -I/usr/local/include

但是上面的命令编译链接代码。编译成功后,gcc 又会抛出一堆错误,其中一个是undefined reference

为防止这种情况,构建示例的完整命令行(至少在 Linux 上)为:

gcc example.c -I/usr/local/include -L/usr/local/lib -lSDL

地点:

  • -I 使用 SDL.h 将编译器指向目录,
  • -L 将链接器指向带有libSDL.a(或libSDL.so)的目录,
  • -l 指示链接器链接库,在我们的例子中是 libSDL.alibSDL.so。请注意,缺少 lib 前缀和 .a/.so 后缀。

请注意,我没有检查这条指令,即使是在 Linux 机器上(另一方面,我无法访问 Mac OS 机器)。

还有一件事:默认情况下,带有编译和链接示例的二进制文件将称为 a.out。要更改它,您可以向 gcc 提供 -o 选项。

关于c - 如何编译用 C 编写的示例 SDL 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19366064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com