これが私の現在のMakefileの一部です。
CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer
Libsdlを適切にインストールしました。SDL.hは/ usr/include/sdlにありますが、それは属しますが、コンパイルされません。 .hファイルにも#include "SDL.h"
という行がありますが、まだ行けません。
誰もが理由を知っていますか?
ヘッダーファイルが/usr/include/sdl/SDL.h
とあなたのコードは次のとおりです。
#include "SDL.h"
コードを修正する必要があります。
#include "sdl/SDL.h"
または、インクルードファイルの場所をプリプロセッサに指示します。
CFLAGS = ... -I/usr/include/sdl ...
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
ほとんどの場合、SDLは/usr/include/SDL
にあります。その場合、#include <SDL.h>
ディレクティブが間違っている場合、#include <SDL/SDL.h>
である必要があります。
その代わりに、/usr/include/SDL
ディレクトリをincludeディレクトリに追加します。そのためには、-I/usr/include/SDL
をコンパイラフラグに追加する必要があります...
IDEを使用している場合、これも非常に簡単です...
ヘッダーファイルは
/usr/include/SDL/SDL.h
あなたのC++コードでこのヘッダーを使用してプル
#include <SDL.h>
あなたはの正しい使い方をしています
`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
最も簡単なアイデアは、コードのコンパイル中にpkg-config --cflags --libs sdl2を追加することです。
g++ file.cpp `pkg-config --cflags --libs sdl2`
同様のケースがあり、 StackAttack sのソリューションを使用できませんでした。彼が使用しているレガシーコード用のSDL2を参照しているためです。
幸いなことに askUbunt の友人は似たようなものを持っていました:
tar xvf SDL-1.2.tar.gz
cd SDL-1.2
./configure
make
Sudo make install