Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #67811

Re: Trying to be generic with the linker (ld instead of g++)

From David Brown <david.brown@hesbynett.no>
Newsgroups comp.lang.c++
Subject Re: Trying to be generic with the linker (ld instead of g++)
Date 2019-08-20 14:10 +0200
Organization A noiseless patient Spider
Message-ID <qjgnvb$6gc$1@dont-email.me> (permalink)
References <fd41e1db-a2dc-445e-8ecb-f176d3361e03@googlegroups.com>

Show all headers | View raw


On 20/08/2019 13:09, Frederick Gotham wrote:
> 
> I've been doing web searches all morning to try solve this so I'm here now as last resort.
> 
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> Typically if we want to combine C and C++ in one program, we can do three steps:
> 
> gcc -c *.c
> g++ -c *.cpp
> g++ -o prog *.o
> 
> So we use 'gcc' to compile the C code. Then we use 'g++' to compile the C++ code. Finally we use 'g++' a second time to link the object files together into one executable file.
> 
> I'm trying to be as generic as possible here in the final step (i.e. linking), and so I want to replace the second use of 'g++' with 'ld', so something like:
> 
> gcc -c *.c
> g++ -c *.o
> ld -o prog *.o

Why?

What benefit do you think you'll get from using "ld" instead of "g++"
for the linking?  It will just mean adding more manual flags.

> 
> This works fine for the C portion of the program so long as you link with the standard C library like this:
> 
> ld -lc -o prog *.o
> 
> But if you also want to link with the C++ library (including the STL), then in theory you can try something like:
> 
> ld -lc -lc++ -o prog *.o
> 
> But this doesn't work for me on my 64-Bit x86_64 Ubuntu 18.04 personal computer. I've tried a few different switches to get the C++ standard library (e.g. lstdc++) but none of them work.
> 

There are a variety of libraries that will be included automatically
when you link using "gcc" and "g++".  Linking C++ code will require more
of these than simpler C code, which is why you get away with it for the
C code.

> How do you link the C++ standard library in when linking with 'ld' ?
> 
> If I run "ld --version" at the command line then I get:
> 

Invoke "g++ *.o" or "gcc *.o" with the "-v" flag, and it will print the
options.  You may not need all of these for manual "ld" flags, but you
will no doubt need more than you have.

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Trying to be generic with the linker (ld instead of g++) Frederick Gotham <cauldwell.thomas@gmail.com> - 2019-08-20 04:09 -0700
  Re: Trying to be generic with the linker (ld instead of g++) Bart <bc@freeuk.com> - 2019-08-20 12:25 +0100
    Re: Trying to be generic with the linker (ld instead of g++) Frederick Gotham <cauldwell.thomas@gmail.com> - 2019-08-20 04:34 -0700
      Re: Trying to be generic with the linker (ld instead of g++) Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2019-08-21 01:07 +0100
    Re: Trying to be generic with the linker (ld instead of g++) Keith Thompson <kst-u@mib.org> - 2019-08-20 15:50 -0700
      Re: Trying to be generic with the linker (ld instead of g++) Bart <bc@freeuk.com> - 2019-08-21 00:27 +0100
  Re: Trying to be generic with the linker (ld instead of g++) Ralf Fassel <ralfixx@gmx.de> - 2019-08-20 14:05 +0200
  Re: Trying to be generic with the linker (ld instead of g++) David Brown <david.brown@hesbynett.no> - 2019-08-20 14:10 +0200
  Re: Trying to be generic with the linker (ld instead of g++) Keith Thompson <kst-u@mib.org> - 2019-08-20 15:58 -0700
  Re: Trying to be generic with the linker (ld instead of g++) Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-08-22 04:47 -0700
    Don't extensions still work? (Was: Trying to be generic with the linker (ld instead of g++)) gazelle@shell.xmission.com (Kenny McCormack) - 2019-08-22 12:12 +0000
      Re: Don't extensions still work? (Was: Trying to be generic with the linker (ld instead of g++)) David Brown <david.brown@hesbynett.no> - 2019-08-22 15:08 +0200
      Re: Don't extensions still work? (Was: Trying to be generic with the linker (ld instead of g++)) Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-08-22 12:57 -0700

csiph-web