Build spends a long time in "mkimport".

Mark Geisert mark@maxrnd.com
Sun Oct 11 07:24:57 GMT 2020


Kaz Kylheku (Cygwin) via Cygwin wrote:
> Hi All,
>> When building the Cygwin DLL, this single step takes almost ten minutes:
>>   ../../.././winsup/cygwin/mkimport --cpu=i686 --ar=ar --as=as --nm=nm 
> --objcopy=objcopy \
>   --replace=atexit= --replace=timezone= --replace=uname=uname_x 
> --replace=__xdrrec_getrec=
>>   [ .. SNIP ... ]
>>   --replace=truncate=_truncate64 libcygwin.a cygdll.a _cygwin_crt0_common.o \
>   atexit.o cygwin_attach_dll.o cygwin_crt0.o dll_entry.o dll_main.o dso_handle.o \
>   libcmain.o premain0.o premain1.o premain2.o premain3.o pseudo-reloc-dummy.o
>> What's puzzling is that there is very CPU activity during this time. It's launching
> some objcopy commands.
>> Is there some documentation that provides an overview of what exactly this does,
> other than studying its perl source code?
>> Maybe it can be sped up?
>> I'm going to have to cycle quite a few times on some changes, so this is frustrating.

Hi Kaz,
I'm redirecting this to the cygwin-developers list as it's a Cygwin build issue. 
Please follow up there.
I've looked at .../winsup/cygwin/mkimport for the same reason as you -- it takes 
forever on my Windows machines. But I don't know enough perl to make any changes.
Near the end of mkimport there's a loop over all the "--replace" args, 
essentially. For each one there are two system() calls launching two objcopy 
processes to do something. This is much slower on Cygwin than it would be 
cross-building from Linux, for example.
One could parallelize the operations on a multicore machine. But probably better 
would be figuring out, if possible, how to do the objcopy operations in one pass, 
over two calls if necessary.
PTC, as we've always said :-)
..mark


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /