初学者在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
相关推荐
linux QT 自动生成.h和.cpp文件的编译脚本程序 谢谢
*.cpp;*.h;*.hpp) 2、Fortran (*.for) 3、Java (*.java) 4、Pascal (*.pas;*.dpr;*.dpk) 5、Visual Basic (*.bas) 6、x86 Assembly (*.ASM) 7、Javascript (*.js) 8、VBScript (*.vbs) 9、PHP (*....
stdafx.h 头文件 很多时候c运行 提示找不到stdafx.h ,
提供Linux下的getopt.h和cpp,可以放到windows下的vc直接编译通过
二、Windows、Linux双平台线程池的实现. 三、一些标准编码的封装类实现. _base64Encode.h _urlEncode.h _utf8Encode.h base32Encode.cpp base32Encode.h base64Encode.cpp base64Encode.h crc32Encode.cpp crc32...
linux下的C语言正则表达式头文件和源文件: regex.h regex.cpp
linux下posix标准的正则表达式库,支持regcomp, regexec等,可以放到vs2010或vs2012下进行编译。
Web 应用程序为 EECS 183(密歇根大学的计算机科学课程)对学生的 .cpp 和 .h 文件进行评分。 ##设置 Web 开发 下载 pip 包管理器。 下载虚拟环境: pip 安装 virtualenv 激活虚拟环境 虚拟环境 在 Windows 中...
g++ -o cppcheck -std=c++0x -include lib/cxx11emu.h -Iexternals/tinyxml -Ilib cli/*.cpp lib/*.cpp externals/tinyxml/*.cpp If you want to use --rule and --rule-file then dependencies are needed: g++...
会看到botan.cpp和botan.h文件,替换到qtCreator下面的相同目录下,大家的可能有所不同。 /home/QtCreator/src/libs/3rdparty/botan 然后对目录中的botan.cpp、botan.h两个文件进行备份 在删除这两个原文件,直接将...
下面是在Windows下编译Linux 0.11会遇到的问题和对原文件作的修改: 1.赵炯博士已经将汇编程序中引用的C变量(包括嵌入汇编的C变量)的下划线去掉了,但MinGW的gcc可能是为了与其它Windows下的编译器保持兼容,并不能...
单元测试打桩开源库 cpp-stub 使用手册 中文版本,这是从git上直接下载的,git上下载的源代码在arm上调用Stub.reset方法会引发段错误,在资源cpp-stub开源代码(下载地址:...
LINUX的库<conio> 来源: : 电报: : 这是用于Linux的库conio.h。 在/ usr / include /上复制文件并将文件conio.h粘贴到/ usr / include /上清单功能cprintfcscanfgotoxy clrscr textcolor textbackground wherex ...
linux下uart收发测试代码实例cpp:uart_demo.cpp,uart_device.cpp,uart_device.h
基于linux下QT开发环境搭建的代码示例,目标会生成一个窗口和按钮示例
压缩包中有一个*.h 和*.cpp 文件,主要的功能是在程序中计算逝去时间和时间间隔。 应用环境为:linux
前言本博客所写到的是我在Linux云服务器升级编译内核时所遇到的真实问题,已解决。编译内核遇到的问题太多了。问题描述 在进行内核编译的时候,提sha1加密 C语
创建.so: ... 在 Test_SO.cpp 文件中添加 make_so.h 在调用外部函数到地方使用如下 Make_so TestAdd; int a = TestAdd.add(2,3); QMessageBox::about(this,tr("提示信息"),QString::number (a,10));
QT 有时是gbk编码,需要统一转成utf-8,这时候你就需要这个工具了。有源码,QT5可以编译通过。