digitalmars.D.learn - Running dmd on ubuntu with AMD64
- Jason House (13/13) Apr 22 2007 I've discovered that the ubuntu linux distribution refuses to run 32 bit...
- Frits van Bommel (22/39) Apr 22 2007 Try installing the "ia32-libs" package.
- Jason House (3/44) Apr 22 2007 Worked like a charm! I'm surprised that wasn't on the ubuntu x86 64-bit...
- Jason House (57/110) Apr 22 2007 Any further tips on getting rebuild/dsss to work? I'm getting linker
- Jason House (5/13) Apr 22 2007 gdc has an amd 64 binary release that works great. No rebuild config
- Frits van Bommel (24/30) Apr 22 2007 This has nothing to do with rebuild/dsss. I had the same problem with
- Jason House (17/17) May 30 2007 Now that I've gotten gdc to work on ubuntu with AMD64, I've started
I've discovered that the ubuntu linux distribution refuses to run 32 bit applications out of the box. Are there plans for releasing a 64 bit version of dmd? Is there anyone more experienced than me that has created a .deb (debian package) file that I can use? jhouse server:~/dmd/bin$ ls -al dmd -rwxr-xr-x 1 jhouse jhouse 1009284 2007-03-26 00:45 dmd jhouse server:~/dmd/bin$ ./dmd -bash: ./dmd: No such file or directory jhouse server:~/dmd/bin$ ldd dmd not a dynamic executable jhouse server:~/dmd/bin$ file dmd dmd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped
Apr 22 2007
Jason House wrote:I've discovered that the ubuntu linux distribution refuses to run 32 bit applications out of the box. Are there plans for releasing a 64 bit version of dmd? Is there anyone more experienced than me that has created a .deb (debian package) file that I can use? jhouse server:~/dmd/bin$ ls -al dmd -rwxr-xr-x 1 jhouse jhouse 1009284 2007-03-26 00:45 dmd jhouse server:~/dmd/bin$ ./dmd -bash: ./dmd: No such file or directory jhouse server:~/dmd/bin$ ldd dmd not a dynamic executable jhouse server:~/dmd/bin$ file dmd dmd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), strippedTry installing the "ia32-libs" package. Works just fine for me: ===== urxae urxae:~/opt/dmd/bin$ ls -l dmd -rwx------ 1 urxae urxae 1014564 2007-04-19 12:04 dmd Digital Mars D Compiler v1.013 Copyright (c) 1999-2007 by Digital Mars written by Walter Bright urxae urxae:~/opt/dmd/bin$ file dmd dmd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped urxae urxae:~/opt/dmd/bin$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 6.10 Release: 6.10 Codename: edgy urxae urxae:~/opt/dmd/bin$ uname -m x86_64 =====
Apr 22 2007
Worked like a charm! I'm surprised that wasn't on the ubuntu x86 64-bit forum. Time to go make another post... Frits van Bommel wrote:Jason House wrote:I've discovered that the ubuntu linux distribution refuses to run 32 bit applications out of the box. Are there plans for releasing a 64 bit version of dmd? Is there anyone more experienced than me that has created a .deb (debian package) file that I can use? jhouse server:~/dmd/bin$ ls -al dmd -rwxr-xr-x 1 jhouse jhouse 1009284 2007-03-26 00:45 dmd jhouse server:~/dmd/bin$ ./dmd -bash: ./dmd: No such file or directory jhouse server:~/dmd/bin$ ldd dmd not a dynamic executable jhouse server:~/dmd/bin$ file dmd dmd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), strippedTry installing the "ia32-libs" package. Works just fine for me: ===== urxae urxae:~/opt/dmd/bin$ ls -l dmd -rwx------ 1 urxae urxae 1014564 2007-04-19 12:04 dmd Digital Mars D Compiler v1.013 Copyright (c) 1999-2007 by Digital Mars written by Walter Bright urxae urxae:~/opt/dmd/bin$ file dmd dmd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped urxae urxae:~/opt/dmd/bin$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 6.10 Release: 6.10 Codename: edgy urxae urxae:~/opt/dmd/bin$ uname -m x86_64 =====
Apr 22 2007
Any further tips on getting rebuild/dsss to work? I'm getting linker errors. I'm assuming dmd is generating a 32 bit executable and failing to link with 64 bit libraries. Can dmd generate a 64 bit executable? I'm not sure how to configure it to do so. I did try hacking at the rebuild config files to see if I could get it to work (resulting file below). Can gdc do better?$ dsss build housebot.d => housebot-0.6 + /bin/rebuild -Idsss_imports/ -I. -S./ -I/include/d -S/lib/ -oqdsss_objs -Dddoc -unittest -w -gc housebot.d -ofhousebot-0.6 gcc dsss_objs/_housebot.o dsss_objs/nmd_gcstats.o dsss_objs/_ipc.o dsss_objs/_gtp.o -o housebot-0.6 -g -m32 -lphobos -lpthread -lm -Xlinker --start-group -Xlinker -lphobos -Xlinker -L./ -Xlinker -L/lib/ -Xlinker -L/home/jhouse/housebot/dmd/bin/../lib -Xlinker -L/home/jhouse/housebot/dmd/bin/../lib /usr/bin/ld: skipping incompatible /usr/bin/../lib/libpthread.so when searching for -lpthread /usr/bin/ld: skipping incompatible /usr/bin/../lib/libpthread.a when searching for -lpthread /usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread /usr/bin/ld: skipping incompatible /usr/lib/libpthread.a when searching for -lpthread /usr/bin/ld: cannot find -lpthread collect2: ld returned 1 exit status --- errorlevel 1 Command /bin/rebuild returned with code 65280, aborting.$ cat /etc/rebuild/default profile=dmd-posix $ cat /etc/rebuild/dmd-posix profile=phobos compiler=dmd inifile=dmd.conf exeext= objext=o version=DigitalMars noversion=GNU version=linux noversion=Unix version=Posix noversion=Windows noversion=Win32 noversion=Win64 noversion=X86 noversion=PPC version=X86_64 version=D_InlineAsm noversion=D_InlineAsm_X86 noversion=D_InlineAsm_PPC version=D_InlineAsm_X86_64 version=LittleEndian noversion=BigEndian [compile] cmd=dmd -version=Posix -c $i flag=$i incdir=-I$i libdir=-L-L$i optimize=-O version=-version=$i [link] cmd=dmd -L--start-group -L-lphobos $i -of$o libdir=-L-L$i lib=-L-l$i flag=-L$i [liblink] safe=yes cmd=ar rc $o $i libdir= lib= flag= [postliblink] cmd=ranlib $i [shliblink] shlibs=no [dyliblink] dylibs=no Frits van Bommel wrote:Jason House wrote:I've discovered that the ubuntu linux distribution refuses to run 32 bit applications out of the box. Are there plans for releasing a 64 bit version of dmd? Is there anyone more experienced than me that has created a .deb (debian package) file that I can use? jhouse server:~/dmd/bin$ ls -al dmd -rwxr-xr-x 1 jhouse jhouse 1009284 2007-03-26 00:45 dmd jhouse server:~/dmd/bin$ ./dmd -bash: ./dmd: No such file or directory jhouse server:~/dmd/bin$ ldd dmd not a dynamic executable jhouse server:~/dmd/bin$ file dmd dmd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), strippedTry installing the "ia32-libs" package. Works just fine for me: ===== urxae urxae:~/opt/dmd/bin$ ls -l dmd -rwx------ 1 urxae urxae 1014564 2007-04-19 12:04 dmd Digital Mars D Compiler v1.013 Copyright (c) 1999-2007 by Digital Mars written by Walter Bright urxae urxae:~/opt/dmd/bin$ file dmd dmd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped urxae urxae:~/opt/dmd/bin$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 6.10 Release: 6.10 Codename: edgy urxae urxae:~/opt/dmd/bin$ uname -m x86_64 =====
Apr 22 2007
Jason House wrote:Any further tips on getting rebuild/dsss to work? I'm getting linker errors. I'm assuming dmd is generating a 32 bit executable and failing to link with 64 bit libraries. Can dmd generate a 64 bit executable? I'm not sure how to configure it to do so. I did try hacking at the rebuild config files to see if I could get it to work (resulting file below). Can gdc do better?gdc has an amd 64 binary release that works great. No rebuild config changes required (besides telling /etc/rebuild/default to use gdc-posix). There's a related thread from earlier this month that says dmd does not support 64 bit yet.
Apr 22 2007
Jason House wrote:Any further tips on getting rebuild/dsss to work? I'm getting linker errors.This has nothing to do with rebuild/dsss. I had the same problem with "pure" dmd. (Sorry for forgetting to mention that in my previous post)I'm assuming dmd is generating a 32 bit executable and failing to link with 64 bit libraries.Yes, that's exactly what's happening AFAIK I got it to work was by running dmd in a 32-bit chroot. See http://ubuntuforums.org/showthread.php?t=24575 for step-by-step instructions. You'll want to install DMD and gcc+binutils into the chroot, and create a symlink named "dmd" (outside the chroot) to the do_chroot script they provide.Can dmd generate a 64 bit executable?No, DMD can only generate 32-bit executables. [snip]Can gdc do better?Although I haven't been able to compile it myself on amd64, the binary distribution[1] worked straight out of the box IIRC. It's a native 64-bit executable and produces 64-bit code. (It's supposed to also be able to generate 32-bit code, but I haven't tried that) Note that there is at least one issue with it, but considering this is the first release to support 64-bit it works pretty well. Unfortunately, that issue means that Tango's formatted output functions don't compile and (G)Phobos' formatted output doesn't support structs... Other than that I haven't had any problems with it, as far as I can remember. [1]: gdc-0.23-x86_64-linux-gcc-4.1.1.tar.bz2 from http://sourceforge.net/project/showfiles.php?group_id=154306
Apr 22 2007
Now that I've gotten gdc to work on ubuntu with AMD64, I've started experimenting with the coverage analysis. gdc -cov will build object files, but doesn't link. Any tips? dsss build -cov -llgcov housebot.d => housebot-0.6 + /bin/rebuild -Idsss_imports/ -I. -S./ -I/include/d -S/lib/ -cov -llgcov -oqdsss_objs -Dddoc -unittest -w -g housebot.d -ofhousebot-0.6 /usr/bin/ld: cannot find -lgcov dsss build -cov -lgcov --libdir=/usr/lib/gcc/x86_64-linux-gnu/4.1.2 housebot.d => housebot-0.6 + /bin/rebuild -Idsss_imports/ -I. -S./ -I/include/d -S/usr/lib/gcc/x86_64-linux-gnu/4.1.2/ -cov -lgcov -oqdsss_objs -Dddoc -unittest -w -g housebot.d -ofhousebot-0.6 dsss_objs/_housebot.o: In function `global constructors keyed to 0__D8housebot21mainThreadControllers6__initZ': /home/jhouse/housebot/0.6/housebot.d:1: undefined reference to `__gcov_init' ...
May 30 2007