dmd.conf... again

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Aug 12 08:49:35 PDT 2015


On Wednesday, 12 August 2015 at 15:30:09 UTC, Atila Neves wrote:
> On Wednesday, 12 August 2015 at 15:22:39 UTC, wobbles wrote:
>> On Wednesday, 12 August 2015 at 14:05:57 UTC, Atila Neves 
>> wrote:
>>> On Wednesday, 12 August 2015 at 13:46:24 UTC, wobbles wrote:
>>>> On Wednesday, 12 August 2015 at 13:00:45 UTC, Atila Neves 
>>>> wrote:
>>>>> On Wednesday, 12 August 2015 at 12:40:49 UTC, Adam D. Ruppe 
>>>>> wrote:
>>>>>> [...]
>>>>>
>>>>> I downloaded the zip, added linux/bin64 to PATH, tried 
>>>>> compiling a hello world and got:
>>>>>
>>>>> usr/bin/ld: cannot find -l:libphobos2.a
>>>>>
>>>>> That's when I started trying to set the configuration but 
>>>>> nothing seems to work.
>>>>>
>>>>> Atila
>>>>
>>>> Have you run dmd from the directory you unzipped it to?
>>>> libphobos2.a is in there I think, so ld wouldn't be able to 
>>>> find it.
>>>
>>> Just did, didn't work. Tried it from lib64 and lib32 as well, 
>>> nothing.
>>>
>>> Atila
>>
>> Hmm, I'll setup a VM later this evening to test, see if I can 
>> figure it out. This really should be easier.
>
> It really should. I straced it and it's trying to link to 
> phobos with `-l:libphobos2.a`. I've never seen a colon in 
> library options before and the (ancient) gcc on the system 
> doesn't seem to like it one bit. I added a hand-compiled gcc 
> 4.9 to my PATH and... it worked.
>
> Atila

 From man ld :)
-l namespec
Add the archive or object file specified by namespec to the list 
of files to link. This option may be used any number of times.  
If namespec is of the form :filename, ld will search the library 
path for a file called filename, otherwise it will search the 
library path for a file called libnamespec.a.

On systems which support shared libraries, ld may also search for 
files other than libnamespec.a.  Specifically, on ELF and SunOS 
systems, ld will search a directory for a library called 
libnamespec.so before searching for one called libnamespec.a.  
(By convention, a ".so" extension indicates a shared library.)  
Note that this behavior does not apply to :filename, which always 
specifies a file called filename.


So in this case it could probably work with -lphobos2.
Maybe -L-l:libphobos2.a was chosen to force the linking with the 
static lib (as can be seen in the second paragraph for systems 
that supports both).

// Joakim


More information about the Digitalmars-d-learn mailing list