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