您不希望有前导句点
错误的
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 mixer...它有一个
pkg-config --cflags --libs SDL2_mixer
...输出
-D_REENTRANT -I/usr/include/SDL2 -lSDL2_mixer -lSDL2
你可能不希望混合使用SDL和SDL2,因此请替换提到的部分。
-lSDL_mixer -lSDL_image
使用
-lSDL2_mixer -lSDL2_image
根据
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
pkg-config
可以与$(pkg-config --cflags --libs sdl2 SDL2_mixer)
组合使用。 - Dietrich Epp