如何知道Ubuntu 11.04中gcc、g++/c++的“默认包含目录”、“默认链接目录”和“默认链接库”?

lrl1mhuk  于 2023-05-18  发布在  其他
关注(0)|答案(3)|浏览(181)

对于以下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。
对于案例(1),gcc使用的是标准C库还是GNU C库?这两个C库有什么区别吗?
比较情况(2)和(3),编译器使用的“默认链接库”有什么不同吗?他们使用的是标准C库还是GNU C库?这两个C++库有什么区别?
提前感谢您的任何建议。
曾浩辉

hmae6n7t

hmae6n7t1#

例如gcc -vg++ -v,以打印出有关环境的详细信息。
例如,对我来说,这句话是:

#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查看工具链中被调用工具的详细信息。

t98cgbkg

t98cgbkg2#

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.
nkhmeac6

nkhmeac63#

作为另一种选择,您可以使用以下命令:

echo | gcc -E -Wp,-v -

由于gcc的消息被打印为stderr,您可以将其重定向到stdin以进行进一步处理(例如sedgrepawk,...)

echo | gcc -E -Wp,-v - 2>&1 | grep lib

相关问题