Compiling Link Error: OpenArena

Compiling Link Error: OpenArena

我正在努力尝试从源代码构建 OpenArena 0.8.8。

我目前卡在这个构建错误消息上。

我已经安装了: sudo apt-get install vorbis-tools-dbg & sudo apt-get install vorbis-tools

我非常有信心有一个简单的修复方法,我对此太缺乏经验,不知道它是什么。谢谢!

make[1]: Entering directory `/home/reimu/Desktop/openarena-engine-source-0.8.8'

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

  CFLAGS:
    -Wall
    -fno-strict-aliasing
    -Wimplicit
    -Wstrict-prototypes
    -pipe
    -DUSE_ICON
    -DNO_GZIP
    -DUSE_LOCAL_HEADERS
    -DPRODUCT_VERSION="1.36"
    -MMD
    -DNDEBUG
    -O3
    -fomit-frame-pointer
    -funroll-loops
    -falign-loops=2
    -falign-jumps=2
    -falign-functions=2
    -fstrength-reduce
    -ffast-math

  CLIENT_CFLAGS:
    -D_GNU_SOURCE=1
    -D_REENTRANT
    -I/usr/include/SDL
    -DUSE_OPENAL
    -DUSE_OPENAL_DLOPEN
    -DUSE_CURL
    -DUSE_CURL_DLOPEN
    -DUSE_CODEC_VORBIS
    -Icode/SDL12/include
    -DUSE_MUMBLE
    -DUSE_VOIP
    -DFLOATING_POINT
    -DUSE_ALLOCA
    -Icode/libspeex/include

  SERVER_CFLAGS:
    -DUSE_VOIP

  LDFLAGS:

  LIBS:
    -ldl
    -lm

  CLIENT_LIBS:
    -lSDL
    -lGL
    -lvorbisfile
    -lvorbis
    -logg
    -lrt

  Output:
    build/release-linux-x86_64/oa_ded.x86_64
    build/release-linux-x86_64/openarena.x86_64

make[2]: Entering directory `/home/reimu/Desktop/openarena-engine-source-0.8.8'
make[2]: `build/release-linux-x86_64/oa_ded.x86_64' is up to date.
LD build/release-linux-x86_64/openarena.x86_64
/usr/bin/ld: cannot find -lvorbisfile
/usr/bin/ld: cannot find -lvorbis
/usr/bin/ld: cannot find -logg
collect2: error: ld returned 1 exit status
make[2]: *** [build/release-linux-x86_64/openarena.x86_64] Error 1
make[2]: Leaving directory `/home/reimu/Desktop/openarena-engine-source-0.8.8'
make[1]: *** [targets] Error 2
make[1]: Leaving directory `/home/reimu/Desktop/openarena-engine-source-0.8.8'
make: *** [release] Error 2

错误信息的关键部分是

/usr/bin/ld: cannot find -lvorbisfile
/usr/bin/ld: cannot find -lvorbis
/usr/bin/ld: cannot find -logg

这意味着链接器无法找到 libogglibvorbislibvorbisfile

sudo apt-get install libogg-dev libvorbis-dev

应该解决这个问题。

一开始你得到的是链接器错误而不是编译器错误,这似乎有点奇怪,但是对 Makefile 的粗略检查让我相信第一个被编译的东西(服务器)实际上并没有使用这些库,并且它们包含在链接器调用中以保持构建系统简单。由于链接器被明确告知要查找这些库(客户端需要这些库),因此它会尽职尽责地查找并在找不到它们时抱怨。