目次 - FAQ - Linux

FAQ:Linux

(注意: このページの大半はSDL 2.0ではなくSDL 1.2に関する記述である. 1.2は現在はサポートされていないため, SDL 2.0の使用を検討すべきである.)

何に対応しているか?

SDLはGNU libcとカーネルバージョン2.6以上が認識する全てのハードウェアに対応している.

最新の情報はインストールを参照すること.

SDLを自分のプロジェクトに追加する方法は?

SDL 1.2ならば"sdl-config --cflags --libs", SDL 2.0ならば"sdl2-config --cflags --libs"の出力を, 例えば gcc -o test test.c `sdl-config --cflags --libs` のように追加すればよい.

もしプロジェクトのMakefileを自分で書くならば, 次の行をMakefileに追加すると正しいCFLAGSとLDFLAGSが得られる.

SDL_CFLAGS := $(shell sdl-config --cflags)
SDL_LDFLAGS := $(shell sdl-config --libs)

プロジェクトでautoconfやautomakeを使うならば, sdl.m4 (sdl2.m4)を内容をコピーしてあなたのacinclude.m4ファイルに追加し, 次の内容をあなたのconfigure.inファイルに追加するとよい. (SDL 1.2用)

dnl Check for SDL
SDL_VERSION=1.2.0
AM_PATH_SDL($SDL_VERSION,
            :,
            AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!])
)
CFLAGS="$CFLAGS $SDL_CFLAGS"
LIBS="$LIBS $SDL_LIBS"

SDL 2.0の場合は, AM_PATH_SDLはAM_PATH_SDL2となり, SDL_VERSIONも適切に設定する必要がある.

SDL RPMをインストールしたが, SDLアプリケーションをコンパイルできない

SDL-devel RPMをインストールする必要がある: http://www.libsdl.org/download.php

nasm 0.98を使っているが, SDLのリンク時にクラッシュする

これはnasmアセンブラ バージョン 0.98(Red Hat 7.1に含まれるバージョン)のバグである. 最新のバージョン0.98.08にアップグレードする必要がある. 何らかの理由でアップグレードできないならば, SDLをソースからビルドするときconfigureに"--disable-nasm"を渡しアセンブリコードを無効にできる.

SDLをソースからインストールしたが, SDLアプリケーションをビルドできない

/etc/ld.so.confを編集し, 次の行があるか確認する:

/usr/local/lib

rootで/sbin/ldconfigを実行する.

/usr/local/bin に実行パスが通っているか確認する:

export PATH=$PATH:/usr/local/bin/

システムに別のバージョンのSDLがないことを確認する. そしてディレクトリからソフトウェアのビルドを阻害する"config.cache"ファイルを全て削除する.

上記の全てを行ってもできない場合は, ビルドできないソフトのあるディレクトリで以下のコマンドを実行した出力結果をSDLメーリングリストに送って欲しい.

MandrakeまたはSlackwareを使っているが, アプリケーションがSDLを認識しない!

おそらくそのSDLはaRtsサウンド対応でビルドされているが, KDEライブラリがシステムの標準の場所にインストールされていない. libartsc.so.0のあるディレクトリを/etc/ld.so.confファイルに追加し, "ldconfig"コマンドを実行する必要がある. 新しいバージョンのMandrakeでは, そのディレクトリは/opt/kde/libになる.

環境変数を設定する方法は?

環境変数の設定方法はログインしたシェルで異なる:

Bourne shell派生の場合: (sh, ash, ksh, zsh, bashなど)

VARIABLE='value'; export VARIABLE

C shell派生の場合: (csh, tcshなど)

setenv VARIABLE 'value'

次のエラーが発生する: "no video devices available"

SDLがXディスプレイを開けなかった場合, SDLはそのX11ビデオドライバを使わない. そして他の使えるドライバがなければ, このエラーが報告される. これを修復するためには, ディスプレイの環境変数を適切に設定する:

sh:

DISPLAY=:0 ; export DISPLAY

csh:

setenv DISPLAY :0

それでも解決しないならば, 最後に xhost + localhost を実行する. これら全てを行っても解決しなければ, SDLをソースからビルドする. X11開発ライブラリがあることを確認すること. そうしなければX11に対応しないSDLになってしまう. X11開発ライブラリをインストールしたならば, "make clean"を実行した後configureとビルドを実行する.

次のエラーが発生する: "SDL: Audio timeout - buggy audio driver? (disabled)"

一部のオーディオドライバはselect()が正しく実装されていない. 時間関数を使った近似値の測定があるが, これは環境変数SDL_DSP_NOSELECTを"1"にすると有効になる. これはESounDやaRtsのような待ち時間の長いサウンドサーバでも使える.

フレームバッファ コンソール アクセラレーションを無効にする方法は?

SDL1.0.3ならば環境変数SDL_FBACCELに"0"を設定する.

DMAオーディオの対応を有効にする方法は?

SDL 1.0.4ならば環境変数SDL_AUDIODRIVERに"dma"を設定する.

DGAマウスの対応を無効にする方法は?

SDL 1.0.4ならば環境変数SDL_VIDEO_X11_DGAMOUSEに"0"を設定する.

X11マウスアクセラレーションを有効にする方法は?

SDL 1.0.8ならば環境変数SDL_VIDEO_X11_MOUSEACCELに"X/Y"を設定する. "X"はマウスアクセラレーションの分子で, "Y"は分母である. 例えば, マウスアクセラレーションを2にしたいならば, 変数に"2/1"を設定すればよい. デフォルトでは現在のX11マウスアクセラレーションを変更しない.

XFree86 XVideoアクセラレーションを無効にする方法は?

YUVハードウェアアクセラレーションは環境変数SDL_VIDEO_YUV_HWACCELに"0"を設定すると無効にできる.

AALibをデフォルトにする方法は?

SDLのビルド: make distclean; ./configure --enable-video-aalib ; make install

アプリケーションの実行: 環境変数SDL_VIDEODRIVERに"aalib"を設定する

SDLにDGA 2.0ビデオドライバを使うようにする方法は?

XFree86が4.01以上であることを確認し, プログラムをrootで実行し, 環境変数SDL_VIDEODRIVERに"dga"を設定し, そしてVoodoo 3000, Matrox G400などのDGAドライバに正しく対応したビデオカードを使う.

X11でSDL_FULLSCREENを指定すると, 画面全体に表示される代わりに黒い画面の中央にウィンドウが表示される!

Xが必要な解像度に切り替えられる必要がある. この場合, モニタがその解像度に対応していなければならない. そしてその解像度がXサーバ設定ファイルに記述されている必要がある.

以下はXFree86 4.0.1の例だが, 3.3.xもこれと似ている. もしあなたのモニタがこれらのビデオモードに対応していないならば, Xサーバは有効なビデオモードの一覧からそれを除外するので注意すること. 例:

Section "Screen"
    Identifier  "Screen 1"
    Device      "3dfx"
    Monitor     "Samsung LCD"
    DefaultDepth 16

    Subsection "Display"
        Depth       8
        Modes       "1280x1024" "1024x768" "800x600" "640x480" "320x240"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "1280x1024" "1024x768" "800x600" "640x480"
        ViewPort    0 0
    EndSubsection
EndSection

深度8bitと16bitでは設定が違うことに注意すること. 320x240はXが深度16bitで起動した場合(デフォルト)には*無効*である.

これらの設定を試すならば, XF86Configを編集した後にXを再起動し, CTRL ALT + と CTRL ALT - を押してこれらの解像度に設定する. -- Andreas Umbachによる追記

FedoraでSDLをビルドするための全ての依存をインストールする方法は?

FedoraにSDL 2.0をビルドするためにはこれらのパッケージをインストールする必要がある.

sudo yum install rpm-build alsa-lib-devel libX11-devel libXScrnSaver-devel libXau-devel libXcursor-devel libXext-devel libXfixes-devel libXi-devel libXinerama-devel libXrandr-devel libXrender-devel libXxf86vm-devel mesa-libGL-devel pulseaudio-libs-devel

UbuntuでSDLをビルドするための全ての依存をインストールする方法は?

次のコマンドを実行する: sudo apt-get build-dep libsdl1.2

個別に依存を得ることもできる:

sudo apt-get install build-essential mercurial make autoconf automake libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev libgl1-mesa-dev libesd0-dev

SDL Wikiへのリンク

FAQ: Linux - SDL Wiki