你不想要那个领先时期
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