Installing ldc breaks gdc

Eduard Staniloiu via Digitalmars-d digitalmars-d at puremagic.com
Fri Dec 9 07:59:07 PST 2016


Hello, everyone.

So I have found that installing ldc will break gdc.

The setup:

I have a VM running a 64bit Ubuntu 16.04, as you can see from the 
output of uname -a:

   Linux ubuntu-xenial 4.4.0-51-generic #72-Ubuntu SMP Thu Nov 24 
18:29:54 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

I have installed:
   dmd --version: DMD64 D Compiler v2.072.0
   gdc --version: gdc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 
20160609

With this setup, in /usr/include we can find dmd/
/usr/include/dmd
|-- druntime
|   `-- import
|       |-- core
|       |-- etc

As far as I can tell(guess), both dmd and gdc are using this one.

I installed ldc2 (using apt-get install ldc):
   ldc2 --version: LDC - the LLVM D compiler (0.17.1):
                   based on DMD v2.068.2 and LLVM 3.8.0
                   Default target: x86_64-pc-linux-gnu

After installing ldc2, in /usr/include a new folder, d/, was 
created
/usr/include/d
|-- core
|-- etc
|-- ldc
`-- std

And now, the issue:
After the steps above, when I try to compile something using gdc, 
it fails with the following error:

/usr/include/d/core/stdc/stdarg.d:48:5: error: undefined 
identifier _va_list_tag
      alias __va_list = __va_list_tag;
      ^

Based on my previous assumtion (both dmd and gdc use 
/usr/include/dmd/) and the error above, I am inclined to believe 
that after installing ldc, gdc is using /usr/include/d/ and it 
breaks.

Maybe we should consider having a separate folder in 
/usr/include/ for each compiler?

Cheers,
Eduard



More information about the Digitalmars-d mailing list