Boost logo

Boost-Build :

Subject: Re: [Boost-build] Error message: gcc.link.dll actions too long (max 102400):
From: Nogradi, Chris (Chris.Nogradi_at_[hidden])
Date: 2011-07-07 08:58:49


You can also shorten the paths using this in your jamroot.jam:

modules.poke property : .abbrev : abbreviate-dashed ;

Chris

-----Original Message-----
From: boost-build-bounces_at_[hidden] [mailto:boost-build-bounces_at_[hidden]] On Behalf Of Schweizer Werner
Sent: Thursday, July 07, 2011 3:07 AM
To: boost-build_at_[hidden]
Subject: Re: [Boost-build] Error message: gcc.link.dll actions too long (max 102400):

Hi Jürgen,
thanks for your answer.

Jürgen Hunold wrote:
> Hi Werner,
>
> courtesy copy due to the long delay.
>
> On Friday, 1. July 2011 10:04:46 Schweizer Werner wrote:
>> I'm trying to use Boost.Build to build our existing project based
>> currently on make.
>>
>> In one library, containing many code-generated source files the
>> linking action fails due to the large list of object files.
>
> On Unix? I only encoutered this one on Windows.

SUSE Linux Enterprise Server 10 (x86_64)

gcc version 4.1.0 (SUSE Linux)

I tried to change "#define MAXLINE 102400 /* longest 'together' actions' */" in jam.h to "#define MAXLINE 202400 /* longest 'together' actions' */" and recompiled bjam.
But then the error message came from the os (bjam's message gone). This means: There is an OS limitation on the line length and it is correctly shielded by bjam.

And here you can see: my line length is longer than 102400.
        find bin/gcc-4.1.0/debug/address-model-64/threading-multi -name "*.o" | wc -l
        178435

>
>> In contrast to building with make the linker command line is blown up
>> in Boost.Build by the relative path names to every .o-file.
>>
>> With make we build directly in the directory, where the .o-files are.
>>
>> Is it possible with Boost.Build to also change into the directory
>> with the .o-files and execute the link command there with pure
>> object file names (path-part stripped off)?
>>
>> How can I do this?
>
> That I can't answer and it might be tricky.
>

I tried successfully by shortening the relative path by declaring the features "toolset", "threading", "address-model" and "variant" as incidental.
But this can't be the solution.

>> Or is there an other solution?
>
> Use response files. On gcc they are known as "linker input files".
>
> The attached patch works with gcc-4.6 and maybe all 4.x.
> Developed on windows, but works on Kubuntu 11.04.
> Feedback welcome.
> If this works for other, I can try to get this into Boost.Build.
>

I will see if I can try that.

> Yours,
>
> Jürgen

Cheers
Werner
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build

This e-mail and any attachments may contain confidential material for the sole use of the intended recipient. If you are not the intended recipient, please be aware that any disclosure, copying, distribution or use of this e-mail or any attachment is prohibited. If you have received this e-mail in error, please contact the sender and delete all copies.

Thank you for your cooperation.


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk