Installing LDC on Gentoo

From D Wiki
Jump to: navigation, search

There is a Gentoo portage overlay for the LDC compiler officially supported by the developers. You can add the overlay with layman. If you do not have layman yet then install it with

emerge -av layman

After that you have to add to /etc/portage/make.conf the following line:

source "/var/lib/layman/make.conf"

To use the LDC overlay, simply add our URL to /etc/layman/layman.cfg:

overlays  : http://www.gentoo.org/proj/en/overlays/repositories.xml
            https://raw.github.com/ldc-developers/gentoo-overlay/master/overlays.xml

Then update the overlay list

layman -L

and add the LDC overlay:

layman -a ldc

To emerge LDC you simply type:

emerge -av ldc2

Currently the LDC packages are marked as unstable. If you do not accept unstable packages globally then you have to add to /etc/portage/package.keywords the entry

dev-lang/ldc2 **

Hardened Gentoo

Hardened Gentoo (and derivatives such as Sabayon) use a version of GCC that requires PIC executables and libraries. As LDC uses GCC for linking, this will result in errors such as:

$ ldc2 test.d
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/ld: test.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
test.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
Error: /usr/bin/gcc failed with status: 1

This can be fixed by compiling Phobos with BUILD_SHARED_LIBS (which is currently unsupported and broken), or by using an alternate linker. e.g.

env CC=/usr/bin/clang ldc2 test.d

Resources

Official Dlang overlay

Overlay repository on GitHub

Gentoo wiki on overlays