0

私は本当にあなたの助けが必要です。Xcom サーバー ファイルをコンパイルして Ubuntu Linux をインストールするのに苦労しています。Xcom サーバーは、マルチプレイヤー ゲームやメッセージング システムとしても役立つメッセージング サーバーです。

コマンドをmake入力すると、次のようなエラーが返されます。

/bin/sh: 1: gdmd: not found
Makefile:35: recipe for target 'protocol-daemon' failed
make: ***[protocol-daemon] Error 127

私はLinux Ubuntuを使用しています。Makefileファイルはそのようなものです:

DFLAGS_DEBUG=-debug=2 -g -Isrc
DFLAGS_DEBUG1=-debug=1 -g -Isrc
DFLAGS=-O -inline -Isrc

PROTOCOL_SRC=src/misc_util.d src/socket_base.d src/xcomm_sockets.d src/msgserver_core.d src/char_outbuffer.d src/logging.d src/xml_util.d src/plugins.d src/xcomm_protocol/*.d src/stork/*.d src/stork/*/*.d
PROTOCOL_LIBS=-fPIC -q,-rdynamic -L-ldl
PROTOCOL_OUTPUT=./xcomm
PROTOCOL_FLAGS=-c xcomm.conf

PLUGIN_LIBS=-fPIC -q,-rdynamic,-shared

defaulttarget: protocol-daemon plugins-opt
all: protocol-daemon plugins-opt
distclean: clean

protocol:
    gdmd $(DFLAGS_DEBUG) -op -of$(PROTOCOL_OUTPUT) $(PROTOCOL_SRC) $(PROTOCOL_LIBS)
    find . -name "*.o" -print0 | xargs -0 rm -f

protocol-debug1:
    gdmd $(DFLAGS_DEBUG1) -op -of$(PROTOCOL_OUTPUT) $(PROTOCOL_SRC) $(PROTOCOL_LIBS)
    find . -name "*.o" -print0 | xargs -0 rm -f

protocol-test: protocol plugins
    $(PROTOCOL_OUTPUT) $(PROTOCOL_FLAGS)

protocol-opt:
    gdmd $(DFLAGS) -op -of$(PROTOCOL_OUTPUT) $(PROTOCOL_SRC) $(PROTOCOL_LIBS)
    find . -name "*.o" -print0 | xargs -0 rm -f

protocol-opt-test: protocol-opt plugins-opt
    $(PROTOCOL_OUTPUT) $(PROTOCOL_FLAGS)

protocol-daemon:
    gdmd $(DFLAGS) -version=daemon -op -of$(PROTOCOL_OUTPUT) $(PROTOCOL_SRC) $(PROTOCOL_LIBS)
    find . -name "*.o" -print0 | xargs -0 rm -f

daemon-debug:
    gdmd $(DFLAGS_DEBUG) -version=daemon -op -of$(PROTOCOL_OUTPUT) $(PROTOCOL_SRC) $(PROTOCOL_LIBS)
    find . -name "*.o" -print0 | xargs -0 rm -f

protocol-debug: protocol plugins
    find . -name "*.o" -print0 | xargs -0 rm -f
    gdb --args $(PROTOCOL_OUTPUT) $(PROTOCOL_FLAGS)

plugins:
    gdmd $(DFLAGS_DEBUG) -op -ofplugins/random.so src/plugins/random.d $(PLUGIN_LIBS)
    gdmd $(DFLAGS_DEBUG) -op -ofplugins/game_sets.so src/plugins/game_sets.d $(PLUGIN_LIBS)

plugins-opt:
    gdmd $(DFLAGS) -op -ofplugins/random.so src/plugins/random.d $(PLUGIN_LIBS)
    gdmd $(DFLAGS) -op -ofplugins/game_sets.so src/plugins/game_sets.d $(PLUGIN_LIBS)

clean:
    find . -name "*.o" -print0 | xargs -0 rm -f
    rm -f *.log
    rm -f plugins/*.so
    rm -f src/test_clients/old_n_crufty
    rm -f src/test_clients/scripted
    rm -f src/test_clients/spammer
    rm -f src/test_clients/spammer2
    rm -f $(PROTOCOL_OUTPUT)

backup: distclean
    @if [ ! -e dist ]; then mkdir dist; fi
    tar c . --exclude=CVS --exclude=.svn --exclude=dist | bzip2 -9 > dist/xcomm-backup_`date +"%Y-%m-%d_%H%M"`.tar.bz2

# Create a release tarball.
dist: distclean
    @if [ "$(DISTVER)" = "" ]; then echo DISTVER not set - please set it to 1.0 or similar.; echo; exit 1; fi
    @if [ ! -e dist ]; then mkdir dist; fi
    tar c . --exclude=CVS --exclude=.svn --exclude=dist --exclude=debug.conf | bzip2 -9 > dist/xcomm-$(DISTVER).tar.bz2

.PHONY: protocol protocol-test protocol-opt protocol-opt-test protocol-daemon protocol-debug plugins plugins-opt clean dist distclean backup all defaulttarget
.NOTPARALLEL:

すべてのファイルを送信することもできます。助けてください。4日かかりましたが、まだうまくいきません。エラーは次のようになります。

ここに画像の説明を入力

4

1 に答える 1

0

DMD は Digital Mars の D 言語コンパイラだと思います。利用可能なパッケージのリストでそれを見つけてインストールしてください: http://www.digitalmars.com/d/1.0/dmd-linux.html

アップデート

わかりました、私は問題をもう少し調べました。

DMD は確かにデジタル mars D コンパイラですが、必要なのは GDMD です。これは、GNU D 上で実行される DMD の模倣です。Ubuntu 15.04、64 ビット、GCC 4.9.2 を実行しています。

  1. GNU Dをインストールしました:apt-get install gdc
  2. https://github.com/D-Programming-GDC/GDMDから GDMD をダウンロードして /usr/bin にインストールし、gdmd実行可能にしました
  3. チェック済みなのでgdmd、ターミナルで多くのオプションが出力されます
  4. ファイルを取得し、解凍してヒットmake
  5. 引用符で囲まれていない \0 と \n に関するエラーが発生しました。いくつかの場所を編集し、物事を二重引用符で囲みました
  6. std/c/unix/unix.d が見つからないというエラーが発生しました。私のシステムにはそのようなものはありませんが、クイック検索で、現在は Linux と呼ばれていることがわかりました。そのため、いくつかの場所で std.c.unix.unix を std.c.linux.linux に置き換えました
  7. 今エラーはエラーです:モジュールの日付はファイル 'std/date.d'にあり、読み取ることができません

諦めてたいまつを君に渡した

アップデートⅡ

実際、欠落しているかなりの数の「std/date.d」を処理するのは簡単です-それをstd.datetimeに置き換えます。しかし、その後、私は行方不明になりgc(ガベージコレクター?)、次に行方不明になりましたmd5(ハッシュ?)

于 2016-03-13T14:41:25.323 に答える