== Quote from Georg Wrede ([email protected])'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.
