要搞圖形界面,SDL是比較好上手的一個庫。今天試着在centos下搞了一個SDL的程序。下面是配置的步驟:
首先yum search SDL,會出現SDL相關的軟件包。不過我這里只有SDL1的,沒有2的。然后看對了后,install一下。要注意,一定要看清楚是32位的還是64位的,下載和自己系統對應的版本,否則編譯會出錯。我這里是64位的系統,因此下載64位的版本。
yum install SDL-devel.x86_64 SDL_mixer-devel.x86_64 SDL_ttf-devel.x86_64 SDL_image-devel.x86_64 SDL_net-devel.x86_64
我把常用的包都安裝上了,如果你有其他需要可以自己調整。
安裝完后,就可以正式寫代碼了。
#include "SDL.h" #include "SDL_image.h" #include "SDL_mixer.h" #include "SDL_ttf.h" #include "SDL_net.h" int main() { SDL_Init(SDL_INIT_EVERYTHING); SDL_Quit(); return 0; }
保存代碼為test1.cpp
編譯的時候,需要額外添加sdl的頭文件路徑、鏈接庫路徑和鏈接庫。我的系統中,頭文件在 /usr/include/SDL 下,而鏈接庫在 /usr/lib下。
編譯命令:
gcc test1.cpp -I/usr/include/SDL -L/usr/lib -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf -lSDL_net -lstdc++ -otest1.a
這里要注意,-lstdc++ 這個庫不能省,否則會報錯。
如果沒有任何提示,那么恭喜,編譯成功啦。
還要提示一點,SDL程序的運行時需要相關庫的支持的。不過還有一個static的SDL編譯庫,留給讀者自己探索。
最后總結幾個常見的問題:
如果gcc報告一大堆undefined,比如什么 Uint8 不能命名,類型未定義等等,看看是不是忘記加 -lstdc++
如果報告 libSDL.so 不完整或打不開,看看是不是選擇了系統對應的64或32位版本。如果和系統不相同,那么編譯是不能通過的。
