对于以下3个编译案例:
gcc -o helloc hello.c (1)
g++ -o hellocpp hello.cpp (2)
c++ -o hellocpp hello.cpp (3)
我怎么知道每种情况下的“默认包含目录”,“默认链接目录”和“默认链接库”?我在32位Ubuntu 11.04环境中使用gcc 4.5.2。
对于case(1),gcc是使用标准C库还是GNU C库?两个C库之间有区别吗?
比较案例(2)和(3),编译器使用的“默认链接库”有什么不同吗?他们使用的是标准C ++库还是GNU C ++库?两个C ++库之间有什么区别?
提前感谢任何建议。
Lawrence Tsang
答案 0 :(得分:12)
说gcc -v
或g++ -v
打印出有关环境的详细信息。
E.g。对我来说,这说:
#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
还可以尝试gcc -dumpspecs
查看有关工具链中调用工具的详细信息。
答案 1 :(得分:9)
Kerrek SB的答案在Ubuntu 12.04上对我不起作用,但这似乎有效:
cpp -v
接下来我得到了这个:
#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.