简体   繁体   中英

GDMD compiling errors (CA XCOM server)

I really need your help. I am struggling to compile Xcom server files to install my Ubuntu Linux. Xcom server is a messaging server which is also helpful for a multiplayer game and as a messaging system.

When I type make command it returns error like:

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

I am in linux Ubuntu. The Makefile file is like that :

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:

I can send you all files as well please help me. It took my 4 days but still not succueded. The error looks like the following:

在此处输入图片说明

DMD is a D language compiler from Digital Mars, I believe. Try to find it in the list of available packages and install, http://www.digitalmars.com/d/1.0/dmd-linux.html

UPDATE

ok, I've looked into issue a bit more.

DMD is indeed digital mars D compiler, but what you need is GDMD, which is imitation of DMD running on top of GNU D. I'm running Ubuntu 15.04, 64bit, GCC 4.9.2

  1. I've installed GNU D: apt-get install gdc
  2. I've downloaded GDMD from https://github.com/D-Programming-GDC/GDMD and installed it in /usr/bin as gdmd , and made it executable
  3. Checked, so gdmd in terminal prints a lot of options
  4. Got your files, unpacked and hit make
  5. Got errors about unquoted \\0 and \\n. Edited few places and put things in double quotes
  6. Got error about missing std/c/unix/unix.d. There is no such thing on my system, but quick search told me it is now called linux. So in few places replaced std.c.unix.unix to std.c.linux.linux
  7. NOw error is error: module date is in file 'std/date.d' which cannot be read

I gave up and passing torch to you

UPDATE II

actually dealing with quite a few missing 'std/date.d' is easy - replaced it with std.datetime. But then I got missing gc (garbage collector?), then missing md5 (hash?)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM