Subject: Re: Where are Reg* implemented?
From: [email-masked] (Jason Zions)

1 Aug 1997 08:34:37 -0700
Approved: [email-masked]
Distribution: cygnus
Message-ID: <[email-masked]>
References: <[email-masked]>
Reply-To: [email-masked]
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 3.01Gold (WinNT; I)
Original-To: Wei Ku <[email-masked]>
Original-CC: [email-masked], Justin Hopkins <[email-masked]>
Original-Sender: [email-masked]

> My impression ( an what I always do ) is to put the options before the
> files to be compiled or linked as following:
> 
> g++ -o outfilename -O -L libpath -l lib file.c file.o ...

Usually won't work. *Most* options need to go up front; -O, -L, etc.

Library options (-l) *must* be specified in the *correct order* so that
resolution can be controlled. By listing a library, -lfoo, before any .o
files have been loaded, you're trying to resolve entrypoints from the
library before the loader has seen any unresolved names.

First list the .o files, then the libraries you want the loader to use
to resolve entrypoints, in the order you want it to try. If two
libraries both have a particular entrypoint, the first one the loader
sees (once it sees the unresolved name from another file) is the one it
loads, and it silently ignores the latter one (because the name has
already been resolved).

This is basic stuff, folks. Read a Unix system's "ld" man page.

Jason

-
For help on using this list (especially unsubscribing), send a message to
"[email-masked]" with one line of text: "help".