Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
November 25, 2013 Linking order on Linux matters? | ||||
---|---|---|---|---|
| ||||
Hey all, New to Linux, so I wanted to double check something. I have a C shared library and a D static library. The D static library uses functions from the C library. On Windows, it didn't matter what order I linked the .libs in and it always compiled fine. On Linux, however, I have to link the static library first and then the shared library or else I get undefined symbols for each extern(C) function I declare in my D code. Is this normal for Linux or is it a compiler bug? Thanks! |
November 25, 2013 Re: Linking order on Linux matters? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jeremy DeHaan | 25-Nov-2013 22:19, Jeremy DeHaan пишет: > Hey all, > > New to Linux, so I wanted to double check something. I have a C shared > library and a D static library. The D static library uses functions from > the C library. On Windows, it didn't matter what order I linked the > .libs in and it always compiled fine. On Linux, however, I have to link > the static library first and then the shared library or else I get > undefined symbols for each extern(C) function I declare in my D code. > Is > this normal for Linux or is it a compiler bug? > AFAIK it's was a somewhat (a couple of years?) recent change but yes, it's the norm on Linux now. > Thanks! -- Dmitry Olshansky |
November 25, 2013 Re: Linking order on Linux matters? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jeremy DeHaan | On Monday, 25 November 2013 at 18:19:57 UTC, Jeremy DeHaan wrote: > Hey all, > > New to Linux, so I wanted to double check something. I have a C shared library and a D static library. The D static library uses functions from the C library. On Windows, it didn't matter what order I linked the .libs in and it always compiled fine. On Linux, however, I have to link the static library first and then the shared library or else I get undefined symbols for each extern(C) function I declare in my D code. Is this normal for Linux or is it a compiler bug? > > Thanks! Order matters, no matter the language. See http://stackoverflow.com/a/409470/1924406 |
November 25, 2013 Re: Linking order on Linux matters? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Antoche | On Monday, 25 November 2013 at 20:29:19 UTC, Antoche wrote:
> On Monday, 25 November 2013 at 18:19:57 UTC, Jeremy DeHaan wrote:
>> Hey all,
>>
>> New to Linux, so I wanted to double check something. I have a C shared library and a D static library. The D static library uses functions from the C library. On Windows, it didn't matter what order I linked the .libs in and it always compiled fine. On Linux, however, I have to link the static library first and then the shared library or else I get undefined symbols for each extern(C) function I declare in my D code. Is this normal for Linux or is it a compiler bug?
>>
>> Thanks!
>
> Order matters, no matter the language. See
> http://stackoverflow.com/a/409470/1924406
Thanks!
That's a great link. It cleared up quite a lot.
|
November 26, 2013 Re: Linking order on Linux matters? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jeremy DeHaan | On Monday, 25 November 2013 at 23:25:05 UTC, Jeremy DeHaan wrote:
>>
>> Order matters, no matter the language. See
>> http://stackoverflow.com/a/409470/1924406
>
> Thanks!
>
> That's a great link. It cleared up quite a lot.
Note that this also applies to Windows with MinGW (and, I assume, Cygwin). It's a GCC thing, not a Linux thing. So I would assume it would arise when using LDC and GDC.
|
Copyright © 1999-2021 by the D Language Foundation