home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!pipex!bnr.co.uk!uknet!edcastle!aiai!richard
- From: richard@aiai.ed.ac.uk (Richard Tobin)
- Newsgroups: comp.unix.bsd
- Subject: Re: [386bsd] Strange behavior of the system.
- Message-ID: <8144@skye.ed.ac.uk>
- Date: 11 Jan 93 15:21:28 GMT
- References: <3871@tansei1.tansei.cc.u-tokyo.ac.jp>
- Sender: news@aiai.ed.ac.uk
- Organization: HCRC, University of Edinburgh
- Lines: 39
-
- In article <3871@tansei1.tansei.cc.u-tokyo.ac.jp> mhiroshi@tansei.cc.u-tokyo.ac.jp (H. Murakami) writes:
- >I encountered a unbelieavable behavior of the system now.
- >If I linked the object files using gcc2 then the executable
- >outputs just two warning.
- >However, if I make the object archive first, and then
- >link is made using the gcc2 for the object and the library,
- >the result is different!
-
- >How this can be possible????
-
- It would help if you told us more about your program.
-
- A possible explanation is this:
-
- Object files and libraries are processed sequentially by the linker.
- Object files are always linked in. Modules from libraries are only
- linked in if they define a symbol that is (at the time the library
- is processed) referenced and undefined.
-
- Suppose your program calls a function in the standard library (say
- printf). This library function calls another library function (say
- vfprintf). If you link your program with a .o file defining vfprintf,
- that version of vfprintf will be used, and the one in the standard
- library ignored. On the other hand, if you link with a library that
- defines vfprintf (but not printf), the linker will not use your
- vfprintf because it isn't referenced in your program. When it comes
- to process libc.a, it will link in printf, which will result in an
- undefined reference to vfprintf. It therefore links in the version of
- vfprintf from libc.a.
-
- Libraries are not just like a big object file. If that's what you
- want then combine your .o files into one using "ld -r" rather than
- "ar".
-
- -- Richard
- --
- Richard Tobin,
- Human Communication Research Centre, R.Tobin@ed.ac.uk
- Edinburgh University.
-