-lSDLを検索するときに互換性のない/libSDL.aをスキップする

私はIBMマシン上で "make" ioquake3をしようとしています。 しかし、私は "llSDL.aの検索時に互換性のない/libSDL.aをスキップする"エラーが発生し続けました。 私はあなたのLinux初心者ですが、出張者ではありません! ライブラリをインストールする権限がありません。サーバー管理者は約1週間は応答していません。だから、私は現在、ソリューションのためにグーグル/テストを行っています。 メッセージによると、システム上のライブラリは互換性がありません。そこで、私はUbuntuサイトに行ってSDL PPCライブラリを新しくダウンロードしました。 私はアップロードし、指定されたフォルダに解凍しました。 しかし、GCCはそれらのライブラリがどこにあるかを知らない。そこで、私は "LD_LIBRARY_PATH ="〜/ minoru/cfe2/yasirTemp/ioquake3dev/zzz/pkgs/usr/libという名前のファイルを見つけました "  私の図書館がどこにあるのかをGCCに伝えます。 しかし、私が "make"をするたびに、私はリストの "export"フォルダを持っていません。

私の互換性のないSDLライブラリの問題を解決するには、別の方法でも助けてください。

以下は出力です:

rmc104:~/minoru/cfe2/yasirTemp/ioquake3dev/svfb_201110271440/ioquake3dev_clean[7188]% echo $LD_LIBRARY_PATH
~/minoru/cfe2/yasirTemp/ioquake3dev/zzz/pkgs/usr/lib
rmc104:~/minoru/cfe2/yasirTemp/ioquake3dev/svfb_201110271440/ioquake3dev_clean[7189]% cd ~/minoru/cfe2/yasirTemp/ioquake3dev/zzz/pkgs/usr/lib
rmc104:~/minoru/cfe2/yasirTemp/ioquake3dev/zzz/pkgs/usr/lib[7190]% ls
libSDL.a  libSDL.la  [email protected]  libSDLmain.a  libopenal.a  [email protected]  pkgconfig/
rmc104:~/minoru/cfe2/yasirTemp/ioquake3dev/zzz/pkgs/usr/lib[7191]%
rmc104:~/minoru/cfe2/yasirTemp/ioquake3dev/svfb_201110271440/ioquake3dev_clean[7174]% make
make[1]: Entering directory `/r/home7/yasir/minoru/cfe2/yasirTemp/ioquake3dev/svfb_201110271440/ioquake3dev_clean'

Building ioquake3 in build/release-linux-ppc64:
  PLATFORM: linux
  ARCH: ppc64
  VERSION: 1.36
  COMPILE_PLATFORM: linux
  COMPILE_ARCH: ppc64
  CC: cc

  CFLAGS:
    -MMD
    -Wall
    -fno-strict-aliasing
    -Wimplicit
    -Wstrict-prototypes
    -pipe
    -DUSE_ICON
    -I/usr/include/SDL
    -D_GNU_SOURCE=1
    -D_REENTRANT
    -DUSE_OPENAL
    -DUSE_CURL
    -maltivec
    -Icode/SDL12/include
    -m64
    -DUSE_MUMBLE
    -DUSE_VOIP
    -DFLOATING_POINT
    -DUSE_ALLOCA
    -Icode/libspeex/include
    -DUSE_LOCAL_HEADERS
    -DPRODUCT_VERSION="1.36"
    -DNDEBUG
    -O3
    -ffast-math
    -funroll-loops
    -fomit-frame-pointer

  LDFLAGS:

  LIBS:
    -ldl
    -lm

  Output:
    build/release-linux-ppc64/ioq3ded.ppc64
    build/release-linux-ppc64/ioquake3.ppc64
    build/release-linux-ppc64/baseq3/cgameppc64.so
    build/release-linux-ppc64/baseq3/qagameppc64.so
    build/release-linux-ppc64/baseq3/uippc64.so
    build/release-linux-ppc64/missionpack/cgameppc64.so
    build/release-linux-ppc64/missionpack/qagameppc64.so
    build/release-linux-ppc64/missionpack/uippc64.so

make[2]: Entering directory `/r/home7/yasir/minoru/cfe2/yasirTemp/ioquake3dev/svfb_201110271440/ioquake3dev_clean'
make[2]: `build/release-linux-ppc64/ioq3ded.ppc64' is up to date.
LD build/release-linux-ppc64/ioquake3.ppc64
/usr/bin/ld: skipping incompatible /usr/lib/libSDL.so when searching for -lSDL
/usr/bin/ld: skipping incompatible /usr/lib/libSDL.a when searching for -lSDL
/usr/bin/ld: skipping incompatible /usr/lib/gcc/powerpc-linux-gnu/4.4.5/../../../libSDL.so when searching for -lSDL
/usr/bin/ld: skipping incompatible /usr/lib/gcc/powerpc-linux-gnu/4.4.5/../../../libSDL.a when searching for -lSDL
/usr/bin/ld: skipping incompatible /usr/lib/libSDL.so when searching for -lSDL
/usr/bin/ld: skipping incompatible /usr/lib/libSDL.a when searching for -lSDL
/usr/bin/ld: cannot find -lSDL
collect2: ld returned 1 exit status
make[2]: *** [build/release-linux-ppc64/ioquake3.ppc64] Error 1
make[2]: Leaving directory `/r/home7/yasir/minoru/cfe2/yasirTemp/ioquake3dev/svfb_201110271440/ioquake3dev_clean'
make[1]: *** [targets] Error 2
make[1]: Leaving directory `/r/home7/yasir/minoru/cfe2/yasirTemp/ioquake3dev/svfb_201110271440/ioquake3dev_clean'
make: *** [release] Error 2
rmc104:~/minoru/cfe2/yasirTemp/ioquake3dev/svfb_201110271440/ioquake3dev_clean[7175]% ls
4

1 答え

LD_LIBRARY_PATH determines the search path for shared libraries on runtime. What you want is to say where the library is on compile time. You can use LDFLAGS for this - with the -L switch you can set the search path for libraries: make LDFLAGS=-L/path/to/your/SDL.

互換性のないバージョンなどのために、あなたがUbuntuから手に入れたSDLバイナリがまだ動作しない可能性があります。この場合、SDLをダウンロードして自分で構築することをお勧めします。

3
追加された
はい、パスは.soファイルのパスです。 LDFLAGSを設定するとコンパイルされますか?
追加された 著者 Antti,
答えてくれてありがとう。私はあなたの提案を試みた。追加されたフラグが出力に表示されます。しかし、新しい検索パスは "検索された"ディレクトリには現れません。 .soファイルでファイルを追加する必要がありますか?
追加された 著者 user598208,
マシンが64ビットのときにlibSDL.soが32ビットであることがわかりました。だから私はいくつかの変更を行い、新しいlibSDL.aとlibSDL.soをコンパイルし、それらを "make"フォルダにコピーしました。今、コンパイル時に検索パスに "./"パスが表示されます。しかし、私が "ファイル-L ./libSDL.so"を書くと、私は新しくコンパイルされたlibSDL.soも32ビットであり、64ビットではないことに気付きました!!どのようにしてlibSDL.soの "make"に、32ビットではなく64ビットにコンパイルするように頼むのですか?
追加された 著者 user598208,
私はちょうど私たちのサーバーが "64ビットコンパイルを提供していない"というデビアンを学びました。私は32ビットでコンパイルするための "make"コマンドに追加できるオプションを知っていますか?
追加された 著者 user598208,
私はそれを見つけました:make BASE_CFLAGS = -m32
追加された 著者 user598208,