Using dmd on older machines

dsimcha dsimcha at yahoo.com
Tue Mar 10 15:50:48 PDT 2009


== Quote from Georg Wrede (georg.wrede at iki.fi)'s article
> I wanted to use dmd at another site, so I took my laptop and the latest
> dmd 2 zip.
> All went well, till I ran dmd, and got an error message about it needing
> a newer libc, I had only libc-2.3.5.so on a Fedora version from 2005.
> I thought some expletives about software vendors always compiling their
> products on the absolutely latest OS version, thus introducing
> gratuitous dependencies on brand-new libraries, where most often they
> could compile with a 5 year old version, and make clients happy.
> But, thanks to Walter, /I had the source/, so I compiled dmd from
> scratch. I got a surprise when I tried to use it. Errors I can't figure out:
> $ cat foo.d
> import std.stdio;
> void main(){}
> $ dmd foo.d
> /home/georg/lang/d/dmd/linux/bin/../../src/phobos/std/traits.d(855):
> template instance isStaticArray!(const(int)[]) does not match template
> declaration isStaticArray(T : U[N],U,uint N)
> /home/georg/lang/d/dmd/linux/bin/../../src/phobos/std/traits.d(855):
> Error: expression isStaticArray!(const(int)[]) of type void does not
> have a boolean value
> /home/georg/lang/d/dmd/linux/bin/../../src/phobos/std/traits.d(855):
> static assert  (!isStaticArray!(const(int)[])) is not evaluatable at
> compile time

This might be obvious to you depending on how much you've been reading these
newsgroups lately, but double check to make sure you've wiped all the old src
stuff from previous releases.  Also, make sure that you put the resulting dmd
binary in dmd/linux/bin/ so all the libraries and stuff are where dmd expects them
to be.

Oh yeah, and Walter, thank you for the opensource backend is an absolute godsend.
 I encountered the same problem a while back w/ GLIBC, and as a matter of fact
just a few hours ago, I got DMD to compile w/ this ancient GLIBC version and run
on some ancient Linux distro.  However, given that DMD seems to work on ancient
GLIBC, it might make sense to distribute the prebuilt binaries against an older
version.  As far as I can tell they're forward compatible.  Around here we have a
zillion computers, some with ancient Linux distros and some with newer ones, and
it seems like if you compile DMD on an ancient distro it will work on a newer
(modulo not having 32-bit pthreads present, etc), but not the other way around.



More information about the Digitalmars-d mailing list