在 C 程序中链接 SDL

2024-02-27

在学习了一些 C 基础知识后,我最近对使用 SDL 产生了兴趣。我安装了 SDL_image 和 SDL_mixer。它们位于 /usr/local/include/SDL2 中。我意识到您必须链接到头文件,但我不知道该怎么做。我收到 SDL_mixer 或 SDL_image 不存在的错误(取决于它们在源代码中的行顺序)。我尝试了两种不同的编译命令,但它们在这里都不起作用:

gcc filename.c -o test -I./include -L./usr/local/include/SDL2 -lSDL2main -lSDL2 -lSDL_mixer -lSDL_image

gcc filename.c -o test -I./usr/local/include/SDL2 -L./lib -lSDL2main -lSDL2 -lSDL_mixer -lSDL_image

如果有人有任何想法,我将不胜感激!提前致谢!


你不想要那个领先时期

wrong

gcc filename.c -o test -I./include -L./usr/local/include/SDL2 -lSDL2main -lSDL2 -lSDL_mixer -lSDL_image

更接近 - 还不一定正确

gcc filename.c -o test  -L/usr/local/include/SDL2 -lSDL2main -lSDL2 -lSDL_mixer -lSDL_image

任何带有前导句点的路径都表示从当前目录开始并相对而不是预期的绝对路径

任何系统都有默认库路径的概念,如果您使用标准安装,这很好......所以不需要做

-I/include 

...有时图书馆有助手来识别和自动填充这些...

sdl 和 sdl2 确实有这样一个助手...这将为您提供这些设置

gcc -o test filename.c  `pkg-config --cflags --libs sdl2`

注意那些反引号...另一种语法风格是

gcc -o test filename.c  $(pkg-config --cflags --libs sdl2)

你可以自由地单独发布,只是为了看一眼

pkg-config --cflags --libs sdl2

... 输出

-D_REENTRANT -I/usr/include/SDL2 -lSDL2

现在到你的 sdl 混音器...它有一个

pkg-config --cflags --libs SDL2_mixer

... 输出

-D_REENTRANT -I/usr/include/SDL2 -lSDL2_mixer -lSDL2

您可能不想将 sdl 与 sdl2 混合使用,因此替换提及

-lSDL_mixer -lSDL_image

with

-lSDL2_mixer -lSDL2_image

as per

pkg-config --cflags --libs SDL2_image

... 输出

-D_REENTRANT -I/usr/include/SDL2 -lSDL2_image -lSDL2

所以把这些捆绑在一起

gcc -o test filename.c  -lSDL2main $(pkg-config --cflags --libs sdl2) $(pkg-config --cflags --libs SDL2_mixer)  $(pkg-config --cflags --libs SDL2_image)

或者更简单地组合到

gcc -o test filename.c -lSDL2main $(pkg-config --cflags --libs  sdl2 SDL2_mixer SDL2_image )

这可以简化为以下内容......但上面的语法对更改更加稳健

gcc -o test filename.c -D_REENTRANT -I/usr/include/SDL2  -lSDL2main -lSDL2 -lSDL2_mixer  -lSDL2_image 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C 程序中链接 SDL 的相关文章

随机推荐