日期:2014-05-16  浏览次数:20794 次

Linux的*.h和*.cpp在哪里
初学者在Linux下写C/C++程序,往往不清楚#include一个头文件是从哪里包含进来的,这些头文件的实现又是在哪里。另外,其中那些部分是C的运行时库提供的。因此,本文解决以下问题:
1. Linux C/C++程序头文件在哪里
2. Linux C/C++源程序在哪里
3. glibc
4. 动态链接库和静态链接库
?************************************************************************************************************************************
1. Linux C/C++程序头文件在哪里
?
? ? 大部分在/usr/include/下
? ? 一部分在/usr/lib/**下
?
2. Linux C/C++源程序在哪里
? ? 有些在Linux内核中(如系统调用)
? ? 有些在glibc中(如C标准库),glibc只有库没有源码,库在/usr/lib/libc.so和/usr/lib/libc.a
? ? 有些在第三方库中(/lib和/usr/lib中)
?
3. glibc
? ? glibc, The GNU C Library, 是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万有。而就像其他的 UNIX 系统一样,其内含的库文件分散于系统的树状目录结构中,撑起整个操作系统。
?
4. 动态链接库和静态链接库
? ? 为何include了一个头文件,就可以使用其中声明的东西,系统是在哪里找到这些东西的实现的。有必要了解下“动态链接库”和“静态链接库”的原理、制作过程以及他们生成的文件。详见我另外的博客。
注意:在使用动态链接库时(使用静态链接库亦然),
?????????? 在写C/C++程序时,保证能include到/usr/include或/usr/lib/*下的.h文件;
?????????? 在运行C/C++程序时,保证能链接到glibc提供的动态链接库文件/usr/lib/libc.so
?综上,使用系统或者第三方提供的函数库时,
??????????? 一定要有函数的声明,在.h文件中
??????????? 一定要有函数的实现,在.c或.so或.a中(三者有其一即可)
?
参考文档:
http://blog.csdn.net/ysdaniel/article/details/7043381
glibc百度百科 http://baike.baidu.com/link?url=bkQ8yk_HsvMtDpIR60rAM0AweMDOO-ZkhokzyHr3DYtQ6UutgGjtkqn2quyuULVhg3cH8EmJujKRGR1KK1icFq
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?

?