Difference between revisions of "Installing LDC on Gentoo"

From D Wiki
Jump to: navigation, search
m (Fixed a typo and some formatting.)
m (Fixed citation)
 
(5 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
<pre>
 
<pre>
 
emerge -av layman
 
emerge -av layman
 +
</pre>
 +
 +
After that you have to add to <tt>/etc/portage/make.conf</tt> the following line:
 +
 +
<pre>
 +
source "/var/lib/layman/make.conf"
 
</pre>
 
</pre>
  
Line 34: Line 40:
 
<pre>
 
<pre>
 
dev-lang/ldc2 **
 
dev-lang/ldc2 **
 +
</pre>
 +
 +
== 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:
 +
<pre>
 +
$ 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
 +
</pre>
 +
 +
This can be fixed by compiling Phobos with [https://github.com/ldc-developers/ldc/issues/630 BUILD_SHARED_LIBS] (which is currently unsupported and broken), or by using an alternate linker. e.g.
 +
<pre>
 +
env CC=/usr/bin/clang ldc2 test.d
 
</pre>
 
</pre>
  
 
== Resources ==
 
== Resources ==
 +
[https://wiki.gentoo.org/wiki/Dlang Official Dlang overlay]
 +
 
[https://github.com/ldc-developers/gentoo-overlay Overlay repository on GitHub]
 
[https://github.com/ldc-developers/gentoo-overlay Overlay repository on GitHub]
  

Latest revision as of 14:40, 22 June 2014

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