【问题标题】:how to use SDL in linux?如何在 Linux 中使用 SDL?
【发布时间】:2009-12-03 04:27:54
【问题描述】:

我学校的 linux 服务器只是一个简单的服务器,没有 x-windows,只是一个命令行界面。

我尝试在该服务器上制作图形 c 程序,但发现很多困难。 我使用 SDL 库,但每次尝试使用 gcc 编译代码时,都会得到:

testcursor.c:(.text+0x1ad): undefined reference to `SDL_Init'
testcursor.c:(.text+0x1b6): undefined reference to `SDL_GetError'
testcursor.c:(.text+0x200): undefined reference to `SDL_SetVideoMode'
...

有人知道如何解决这个问题吗?如果没有,有谁在linux下用c做过图形程序,请帮忙!我将不胜感激。谢谢。

【问题讨论】:

  • 仅供参考,如果您没有 X-windows,您将无法在该服务器上运行图形 SDL 程序。这将使调试变得相当困难。
  • 如果直接使用帧缓冲设备就可以。 DirectFB 是一种方法。

标签: c graphics sdl


【解决方案1】:

在linux上链接SDL的recommended way使用的是sdl-config脚本。

示例:

gcc -c test.c $(sdl-config --cflags)
gcc -o test test.o $(sdl-config --libs)
./test

或示例:

gcc -o test test.c $(sdl-config --cflags --libs)

其中 ` 是反引号字符。

【讨论】:

    【解决方案2】:

    -lSDL 添加到您的编译行。

    这告诉gcc 将您的代码链接到 SDL 库。

    【讨论】:

      【解决方案3】:

      您没有链接到 SDL 库。您的命令应如下所示:

      gcc testcursor.c -lsdl
      

      假设您使用的是 Linux 发行版附带的 SDL。如果你下载它并手动构建它,你可能需要更复杂的东西,像这样:

      gcc -I/usr/local/include/sdl testcursor.c -L/usr/local/lib -lsdl
      

      -I 和 -L 选项分别告诉 gcc 在哪里查找包含文件和库。第一个命令不需要它们,因为如果您为系统使用库存 SDL,它们位于默认位置。

      【讨论】:

      • 只是为了澄清,由于字体......这是-i(但大写)和-L,用于查找文件的位置。 -L(但小写)用于链接到 -L(大写)目录中的特定库文件。 (大写的 i 和小写的 L 在代码块中看起来不同,但在纯文本字体中可能已经很清楚了!)
      • 我有一个困难,我不是我学校 linux 机器的 root 用户。因此我无权安装任何库(例如 sdl)。我认为因此我无法使用您上面的命令进行编译。请问有什么办法可以解决这个问题吗?
      • 最明显的解决方案是让您的系统管理员安装 SDL 以及您需要的任何其他库。如果这不能发生,您可以在自己的帐户下安装它们。下载源代码,然后尝试使用“./configure --prefix=$HOME”之类的命令对其进行配置。然后,您可以在没有 root 身份的情况下执行“make install”,因为所有内容都将进入您的主目录的子目录。然后上面的 gcc 命令就变成了“gcc -I$HOME/include...” 注意,如果你的系统真的被锁得很紧,SDL 可能没有权限,它需要接管整个屏幕,就像它一样。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      相关资源
      最近更新 更多