編譯

2012-05-07 65 views
14

這裏是我的一塊當前的Makefile的時候 ' 「SDL.h」 沒有這樣的文件或目錄中找到':編譯

CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer 

我已經libsdl正確安裝,SDL.h是在/ usr/include中/ SDL它屬於哪裏,但它不會編譯。我的.h文件中也有#include "SDL.h",但仍然沒有。

任何人都知道爲什麼?

回答

14

如果頭文件是/usr/include/sdl/SDL.h和你的代碼有:

#include "SDL.h" 

您需要可以解決您的代碼:

#include "sdl/SDL.h" 

或者告訴預處理器在哪裏可以找到包括文件:

CFLAGS = ... -I/usr/include/sdl ... 
5

SDL的大部分時間在/usr/include/SDL。如果是的話那麼你的#include <SDL.h>指令是錯誤的,應該是#include <SDL/SDL.h>

另一種方法是將/usr/include/SDL目錄添加到包含目錄中。要做到這一點,你應該如果您使用的是IDE,這應該是很容易的添加也向-I/usr/include/SDL的編譯器標誌...

...

0

頭文件住在

/usr/include/SDL/SDL.h 

在這個頭使用

#include <SDL.h> 

你有

正確使用你的C++代碼拉
`sdl-config --cflags --libs` 

,這將給你

-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT 
-L/usr/lib/x86_64-linux-gnu -lSDL 

的時間,你也可以看到這種用法,其適用於標準安裝

`pkg-config --cflags --libs sdl` 

-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -lSDL 
+0

注:你對他的'SDL-配置的使用校正--clfags --libs'是SDL2假的。 –

8

提供您Simple Direct Media Layer 2 (SDL2),在Ubuntu 16上安裝後。04通過:

sudo apt-get install libsdl2-dev 

我用的標題:

#include <SDL2/SDL.h> 

和編譯器鏈接器命令:

-lSDL2main -lSDL2 

此外,你可能還需要安裝:

apt-get install libsdl2-image-dev 
apt-get install libsdl2-mixer-dev 
apt-get install libsdl2-ttf-dev 

有了這些標題:

#include <SDL2/SDL_image.h> 
#include <SDL2/SDL_ttf.h> 
#include <SDL2/SDL_mixer.h> 

和編譯器鏈接器命令:

-lSDL2_image 
-lSDL2_ttf 
-lSDL2_mixer