[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: d-i experiences

On Thu, Sep 18, 2003 at 10:29:44PM +0200, Steinar H. Gunderson wrote:
> Simply adding "./libpwdgrp/libpwdgrp.a ./libbb/libbb.a" (libpwdgrp.a needs
> stuff from libbb.a, too) to the end of the command line linking busybox fixes
> the problem, but there must surely be a more elegant way?

OK, I think I found it. :-) From "info ld":

`-( ARCHIVES -)'
`--start-group ARCHIVES --end-group'
     The ARCHIVES should be a list of archive files.  They may be
     either explicit file names, or `-l' options.

     The specified archives are searched repeatedly until no new
     undefined references are created.  Normally, an archive is
     searched only once in the order that it is specified on the
     command line.  If a symbol in that archive is needed to resolve an
     undefined symbol referred to by an object in an archive that
     appears later on the command line, the linker would not be able to
     resolve that reference.  By grouping the archives, they all be
     searched repeatedly until all possible references are resolved.

     Using this option has a significant performance cost.  It is best
     to use it only when there are unavoidable circular references
     between two or more archives.

So, what we want is probably something along the lines of

     gcc -s -o busybox -Wl,--start-group (insert all .a files here) -Wl,--end-group

and the NSS problems should go away.

/* Steinar */
Homepage: http://www.sesse.net/

Reply to: