2017-03-19 8 views
1

私は最近、Cの基本を学んだ後、SDLの使用に興味を持ちました。私はSDL_imageとSDL_mixerをインストールしました。それらは/ usr/local/include/SDL2にあります。ヘッダーファイルとリンクする必要がありますが、どうすればよいか分かりません。 SDL_mixerまたはSDL_imageが存在しないというエラーが発生しています(ソースコードの行順によって異なります)。私は2つの異なるコンパイルコマンドを試しましたが、どちらもここでは動作しません:CプログラムでSDLをリンクする

gcc filename.c -o test -I./include -L./usr/local/include/SDL2 -lSDL2main -lSDL2 -lSDL_mixer -lSDL_image 

gcc filename.c -o test -I./usr/local/include/SDL2 -L./lib -lSDL2main -lSDL2 -lSDL_mixer -lSDL_image 

誰かが私はそれを感謝します!前もって感謝します!

答えて

3

あなたがリードする期間その

間違っ

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) 
0123だろう

gcc -o test filename.c `pkg-config --cflags --libs sdl2` 

通知をそれらの設定を行いますあなたはそれだけでかいま見

pkg-config --cflags --libs sdl2 

を取るために単独で立つ発行するのは自由です

...あなたのSDLのミキサーに出力さて

-D_REENTRANT -I/usr/include/SDL2 -lSDL2 

...よくそれは

pkg-config --cflags --libs SDL2_mixer 
を持っています

...出力

-D_REENTRANT -I/usr/include/SDL2 -lSDL2_mixer -lSDL2 
あなたはおそらくSDL2とSDLを混在させたくない

ので

pkg-config --cflags --libs SDL2_image 

あたりとして

-lSDL2_mixer -lSDL2_image 

-lSDL_mixer -lSDL_image 

の言及を交換...出力そう単純

gcc -o test filename.c -lSDL2main $(pkg-config --cflags --libs sdl2 SDL2_mixer SDL2_image) 

これは、単に以下のためにストリップダウン...まだ構文の上に、より堅牢であることが可能に組み合わせてこれらを一緒

gcc -o test filename.c -lSDL2main $(pkg-config --cflags --libs sdl2) $(pkg-config --cflags --libs SDL2_mixer) $(pkg-config --cflags --libs SDL2_image) 

以上を束ねる

-D_REENTRANT -I/usr/include/SDL2 -lSDL2_image -lSDL2 

変更

gcc -o test filename.c -D_REENTRANT -I/usr/include/SDL2 -lSDL2main -lSDL2 -lSDL2_mixer -lSDL2_image 
+0

非常に詳細な回答をいただきありがとうございます。私はまだこれを試していないが、私はそれが動作すると確信しています! – TheCrifix

+2

'pkg-config'は' $(pkg-config --cflags --libs sdl2 SDL2_mixer) 'と組み合わせることができます。 –

+0

@Scott Stenslandちょっとスコット、私はあなたが示唆したように次のコンパイルコマンドを使用しました:gcc -o test filename .c -lSDL2main $(pkg-config --cflags --libs sdl2 SDL2_mixer SDL2_image)とコンパイルされましたが、プログラムをテストするときにエラーが発生しました。私のプログラムをテストしたところ、利用可能なビデオデバイスがないとの報告がありました。何か案は? – TheCrifix

2

あなたはgccのに適切なフラグを供給するsdl2-configを使用することができます。

gcc filename.c -o test `sdl2-config --cflags --libs` 

sdl2-config --cflagsは、コンパイラに渡す必要があるオプションのリストを生成し、sdl2-config --libsはにリンクされなければならないライブラリのリストを生成します。

関連する問題