ELO-326 FQA sobre la Compilación de programas C++

1.- ¿Cómo sabe el compilador donde se encuentran las bibliotecas estándares?
2.- ¿Qué relación existe entre gcc y g++? ¿Cuál debo usar?
3.- ¿Cuáles son las opciones de compilación de gcc? ¿Dónde puedo encontrar mas sobre esto?
 

1.- ¿Cómo sabe el compilador donde se encuentran las bibliotecas estándares?
    Las bibliotecas estándares están usualmente ubicadas en bajo  LIBDIR/libgcc.a donde LIBDIR está usualmente bajo /usr/local/lib/machine/version. ¿C'omo se sabe? ver la sección archivoc (files) del man gcc o man g++. Éstos están al final de la página man.

    para identificar la versión de su compilador usar:
% gcc -v
o
%g++ -v

Con este comando usted podrá identificar el valor adoptado para LIBDIR.
Por ejemplo, en mi sistema:
agustin@agv2001:~$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.2/specs
gcc version 2.95.2 20000220 (Debian GNU/Linux)
agustin@agv2001:~$ g++ -v
Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.2/specs
gcc version 2.95.2 20000220 (Debian GNU/Linux)
agustin@agv2001:~$ cd /usr/lib/gcc-lib/i386-linux/2.95.2/
agustin@agv2001:/usr/lib/gcc-lib/i386-linux/2.95.2$ ls -l
total 4120
-rw-r--r--    1 root     root        88205 Jun 20  2000 SYSCALLS.c.X
-rwxr-xr-x    1 root     root      1673212 Jun 20  2000 cc1
-rwxr-xr-x    1 root     root      2123708 Jun 20  2000 cc1plus
-rwxr-xr-x    1 root     root        61276 Jun 20  2000 collect2
-rwxr-xr-x    1 root     root        89116 Jun 20  2000 cpp
-rw-r--r--    1 root     root         1900 Jun 20  2000 crtbegin.o
-rw-r--r--    1 root     root         2048 Jun 20  2000 crtbeginS.o
-rw-r--r--    1 root     root         1408 Jun 20  2000 crtend.o
-rw-r--r--    1 root     root         1616 Jun 20  2000 crtendS.o
drwxr-xr-x    4 root     root         4096 Jun 14 07:41 include
-rw-r--r--    1 root     root       123208 Jun 20  2000 libgcc.a
lrwxrwxrwx    1 root     root           32 Jun 14 07:41 libstdc++.a -> ../../../libstdc++-libc6.1-2.a.3
lrwxrwxrwx    1 root     root           33 Jun 14 07:41 libstdc++.so -> ../../../libstdc++-libc6.1-2.so.3
-rw-r--r--    1 root     root         2170 Jun 20  2000 specs

2.- ¿Qué relación existe entre gcc y g++? ¿Cuál debo usar?
    g++ es un programa que llama a gcc con los valores predeterminados del lenguaje definidos para C++, y automáticamente especifica los enlaces (links) con la biblioteca de C++.
    En este curso se recomienda usar g++ mientras no se diga lo contrario.
    En muchos sistemas g++ es también instalado con el nombre c++.
Por ejemplo en mi sistema:

agustin@agv2001:~$ which c++
/usr/bin/c++
agustin@agv2001:~$ ls -l /usr/bin/c++
lrwxrwxrwx    1 root     root           21 Jun 14 07:50 /usr/bin/c++ -> /etc/alternatives/c++
agustin@agv2001:~$ ls -l /etc/alternatives/c++
lrwxrwxrwx    1 root     root           12 Jun 14 07:50 /etc/alternatives/c++ -> /usr/bin/g++
agustin@agv2001:~$

Ojo l significa link o liga hacia (parecido a shortcut o acceso directo en windows)

3.- ¿Cuáles son las opciones de compilación de gcc? ¿Dónde puedo encontrar mas sobre esto?
    Esto está  documentado en las páginas del GNU. Yo he bajado una parte para atender su uso. Vea GCC Command Options.