Importing D libraries

Andrew Wiley wiley.andrew.j at gmail.com
Thu Jul 28 00:17:48 PDT 2011


On Wed, Jul 27, 2011 at 11:46 PM, Jacob Carlborg <doob at me.com> wrote:

> On 2011-07-28 03:23, Andrew Wiley wrote:
>
>> On Wed, Jul 27, 2011 at 2:10 AM, Jacob Carlborg <doob at me.com
>> <mailto:doob at me.com>> wrote:
>>
>>        Cannot be implemented in GDC. The driver/compiler/assembler/__**
>> linker
>>        structure doesn't allow it.
>>
>>
>>    Why is that?
>>
>>
>> Well, the short version is that GDC (the executable) is not a compiler.
>> GDC is a driver that runs cc1d to compile your code, runs as (at least I
>> think that's the name offhand) to assemble it, then runs ld to link it.
>> As far as I know, there's no way for cc1d to communicate the contents of
>> pragmas like this back to the driver, which it would have to do if you
>> wanted the driver to include the library in the arguments to the linker.
>> It's possible that I just don't know the infrastructure well enough, but
>> I think this is one of the reasons the GCC guys refused to implement
>> #pragma in C/C++ as well.
>>
>
> I don't really get this. GDC is a D front end for the GCC back end. So the
> the front end should handle all language specific things, like the pragma.
> Then I assume the front end can pass options to the linker. Is this not the
> case?


In traditional terms, cc1d is a compiler, including both the frontend and
the backend. It takes parameters and spits out assembly. That's it.
The GDC executable is the driver responsible for running cc1d to compile the
source to assembly, as to assemble the object files, and ld to link it all
into a binary. cc1d cannot pass options to the linker because it does not
invoke the linker.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20110728/08a263e2/attachment.html>


More information about the Digitalmars-d-learn mailing list