Reputation: 2889
For the following 3 compile cases :
gcc -o helloc hello.c (1)
g++ -o hellocpp hello.cpp (2)
c++ -o hellocpp hello.cpp (3)
how do I know the "default include directories", "default link directories" and "default link libraries" in each case ? I am using gcc 4.5.2 in a 32 bit Ubuntu 11.04 environment.
For case (1), is gcc using the standard C libraries or the GNU C libraries ? Is there difference between the two C libraries ?
Comparing cases (2) and (3), is there any difference in the "default link libraries" used by the compiler ? Are they using the standard C++ libraries or the GNU C++ libraries ? What is the difference between the two C++ libraries ?
Thanks in advance for any suggestion.
Lawrence Tsang
Upvotes: 12
Views: 22719
Reputation: 1647
As another alternative you can use this command:
echo | gcc -E -Wp,-v -
Since messages of gcc are printed as stderr you may redirect it to stdin for further processing (e.g. sed
, grep
, awk
, ...)
echo | gcc -E -Wp,-v - 2>&1 | grep lib
Upvotes: 1
Reputation: 19302
Kerrek SB's answer doesn't quite work for me on Ubuntu 12.04, but this seems to work:
cpp -v
Toward the bottom I get this:
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
Upvotes: 12
Reputation: 477570
Say gcc -v
, or g++ -v
to print out verbose information about the environment.
E.g. for me this says:
#include <...> search starts here:
/usr/local/lib/gcc/i686-pc-linux-gnu/4.6.2/../../../../include/c++/4.6.2
/usr/local/lib/gcc/i686-pc-linux-gnu/4.6.2/../../../../include/c++/4.6.2/i686-pc-linux-gnu
/usr/local/lib/gcc/i686-pc-linux-gnu/4.6.2/../../../../include/c++/4.6.2/backward
/usr/local/lib/gcc/i686-pc-linux-gnu/4.6.2/include
/usr/local/include
/usr/local/lib/gcc/i686-pc-linux-gnu/4.6.2/include-fixed
/usr/include
Also try gcc -dumpspecs
to see details about the invoked tools in the tool chain.
Upvotes: 16