-lSDL için arama yaparken uyumsuz /libSDL.a atlanıyor

IBM makinede ioquake3'ü "yapmaya" çalışıyorum. Ancak, "-SDL için arama yaparken uyumsuz /libSDL.a atlama" hatasını almaya devam ettim. Ben Linux'ta en yeni acemi değilim, ama bir bırakıcı değil! Herhangi bir kütüphaneyi kurmak için hiçbir imtiyazım yok ve sunucu yöneticimiz yaklaşık bir hafta boyunca yanıt vermiyor. Yani, şimdi bir çözüm için googling/test oldum. Mesajın söylediği gibi, sistemdeki kütüphane uyumsuz. Bu yüzden Ubuntu sitesine gittim ve SDL PPC kütüphanesini yeni indirdim. Yükledim, belirlenmiş bir klasöre açtım. Ancak GCC bu kütüphanelerin nerede olduğunu bilmiyor. Bu yüzden, "LD_LIBRARY_PATH =" ~/minoru/cfe2/yasirTemp/ioquake3dev/zzz/pkgs/usr/lib "adlı bir şey buldum.  GCC’ye kütüphanelerimin nerede olduğunu söylemek. Ancak, her zaman "make" yapıyorum, listede "export" klasörüm yok.

Lütfen uyumsuz SDL kitaplığı sorunumu düzeltmek için farklı bir yöntemle bile yardım edin.

aşağıda çıktı:

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 cevap

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'dan yakaladığınız SDL ikilisinin uyumsuz bir sürüm vb. Nedeniyle hala çalışmayabilir. Bu durumda SDL'yi kendiniz indirmenizi ve oluşturmanızı öneririm.

3
katma
Evet, yol .so dosyalarına giden yoldur. LDFLAGS'yi ayarladığınızda derleme yapar mı?
katma yazar Antti, kaynak
Cevabın için teşekkür ederim. Önerinizi denedim. Çıktıya eklenen bayrağı görüyorum. Ancak, yeni arama yolu "aranan" dizinlerde ortaya çıkmaz. Birini .so dosyaları ile eklemem gereken yol mu yoksa hangisi?
katma yazar user598208, kaynak
Makinem 64 bit olduğunda libSDL.so'nun 32-bit olduğunu keşfettim. Yani, bazı değişiklikler yaptım, yeni bir libSDL.a & libSDL.so derledim ve onları "make" klasörüne kopyaladım. Şimdi, derlediğinde arama yollarındaki "./" yolunu görüyorum. Ancak, ben "-L ./libSDL.so dosyası" Ben yeni derlenmiş libSDL.so bile 32-bit ve 64-bit olduğunu fark ettim! Nasıl libSDL.so için onları 64-bit ve 32-bit değil derlemek için "make" soruyorum?
katma yazar user598208, kaynak
Az önce sunucumuzun "64-bit derleme sağlamadığını" öğrendim. 32-bit'te derlemek için "make" komutuna ekleyebileceğim seçeneği biliyor musunuz?
katma yazar user598208, kaynak
Buldum: BASE_CFLAGS = -m32 yap
katma yazar user598208, kaynak