如何在 Linux 中使用 SDL?
Posted
技术标签:
【中文标题】如何在 Linux 中使用 SDL?【英文标题】:how to use SDL in linux? 【发布时间】: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 是一种方法。 【参考方案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 可能没有权限,它需要接管整个屏幕,就像它一样。跨度>以上是关于如何在 Linux 中使用 SDL?的主要内容,如果未能解决你的问题,请参考以下文章
SDL/C++ OpenGL 程序,如何阻止 SDL 捕获 SIGINT