[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: |
Navin P |
Subject: |
Re: Gnu make option to fix parallel multiple ar on a shared archive |
Date: |
Sun, 11 Aug 2024 08:45:51 +0530 |
On Sun, Aug 11, 2024, 06:29 Kaz Kylheku <kaz@kylheku.com> wrote:
> 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.
> >
>
I was looking at
https://stackoverflow.com/questions/8824969/how-do-i-avoid-concurrency-problems-when-using-gnu-make-for-parallel-builds-of-a
AR := flock make.lock $(AR)
What are the problems with using flock ?
Regards,
Navin