Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Linking with library

Reply
Thread Tools

Linking with library

 
 
jason.cipriani@gmail.com
Guest
Posts: n/a
 
      03-20-2008
On Mar 20, 12:32 am, Jim Johnson <(E-Mail Removed)> wrote:
> C++ linking works by using Linker to combine object files into single
> exe file.
>
> Does each .cpp file compile to a single .obj file?


Generally, yes.

> If the .cpp code called functions in some library (.lib) does the
> Linker will extract the required .obj object file from the library and
> link together with other .obj file to form a EXE?


Yes. Although some linkers may not discard unused object files from
the library; or may give you an option to make it not discard unused
ones (which can sometimes be useful if you want your exe to also
double as a dynamic link library [on Windows the file formats are the
same], exporting functions from linked in libs even though it doesn't
use those functions itself).

>
> So the EXE file can be think of a code file that merged all the .cpp
> (compiled to object) files together?


Pretty much. Generally the way it works is each source file compiles
to an object file, and each of those object files contains a table of
external symbols that it requires (such as functions called from that
source file that are defined in other source files or libraries). The
linker then goes through all of the object files, looking at the
external references each requires, and resolves the external
references by finding what other object files (some of which may be
in .libs) export those symbols and linking it all together, doing some
magic, and producing a final executable.

Jason
 
Reply With Quote
 
 
 
 
Jim Johnson
Guest
Posts: n/a
 
      03-20-2008
C++ linking works by using Linker to combine object files into single
exe file.

Does each .cpp file compile to a single .obj file?

If the .cpp code called functions in some library (.lib) does the
Linker will extract the required .obj object file from the library and
link together with other .obj file to form a EXE?

So the EXE file can be think of a code file that merged all the .cpp
(compiled to object) files together?

 
Reply With Quote
 
 
 
 
Paavo Helde
Guest
Posts: n/a
 
      03-20-2008
Jim Johnson <(E-Mail Removed)> wrote in
news:(E-Mail Removed):

> C++ linking works by using Linker to combine object files into single
> exe file.
>
> Does each .cpp file compile to a single .obj file?


Normally, yes.

> If the .cpp code called functions in some library (.lib) does the
> Linker will extract the required .obj object file from the library and
> link together with other .obj file to form a EXE?


It may extract only single functions (and their dependencies) from a
static lib or (next to) nothing from a dynamic lib. In the latter case
the lib must be available at run-time, the actual linking then occurs by
loading the dynamic lib into the memory, or later. Exact rules depend on
the platform. (For example, the .obj and EXE extensions you mention are
specific to a certain platform.)

>
> So the EXE file can be think of a code file that merged all the .cpp
> (compiled to object) files together?
>


In old times, yes. Currently the widespread usage of dynamic linking and
more recently link-time optimization and exported templates generation
have made the process much more complicated.

Best
Paavo
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Perl MakeMaker - how to force Perl linking with the static C library (libcrt.lib) instead of dynamic C library (msvcrt.lib) Avi Perl Misc 0 04-17-2007 09:20 PM
Linking to Static library of C Anthony Yio C++ 1 05-20-2004 07:36 AM
Dev-c++: Linking a library Josep C++ 1 03-07-2004 08:48 AM
Q: can't find C++ symbols if gcc linking with Sun C++ library Albert C++ 4 09-29-2003 04:03 PM
Linking static library including template Roland Raschke C++ 1 09-22-2003 07:02 PM



Advertisments