[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gnu make option to fix parallel multiple ar on a shared archive
From: |
Kaz Kylheku |
Subject: |
Re: Gnu make option to fix parallel multiple ar on a shared archive |
Date: |
Sat, 10 Aug 2024 17:58:21 -0700 |
User-agent: |
K-9 Mail for Android |
Your makefile is broken, or at least not suitable for parallel builds.
You should add .NOTPARALLEL: to it. That's the minimal change that will fix it.
A makefile with the .NOTPARALLEL: target will not be parallelized even if -j is
requested on the command line or via the environment.
Why it's broken is that you have multiple rules that update the same object.
An archive should be built by exactly one rule which has all the prerequisites
that are going into the archive.
On August 10, 2024 4:04:13 AM PDT, Navin P <navinp0304@gmail.com> wrote:
>Hi,
> I ran multiple instances of ar during a parallel build and they were
>updating different object files using ar rv sometimes the same object file
>again.
>
>When i run make -j1 i find all the object files libx.a but when i do make
>-j8 i find some missing object files inside libx.a.
>
>Then i looked at ar.c and found that there is no synchronization between 2
>instances of ar on same library. The problem is that makefile is generated
>and there are lots of bash scripts doing that.
>
>Is there any way to fix the problem?
>1. Without changing makefile
>2. With changing the makefile in long term.
>
>Regards,
>Navin