预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共59页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

LinuxLinux下下CC编程编程 LinuxLinux下编程概述下编程概述 系统调用与库函数系统调用与库函数 gccgcc、、gdbgdb的使用的使用 makemake 编程语言编程语言 高级语言高级语言 C/C++,C/C++,Java,Java,…… ELFELFbinarybinaryformatformat ExcutableExcutableandandLinkableLinkableFormatFormat 支持动态连接和重定位支持动态连接和重定位 脚本语言脚本语言 Shell:Shell:sh/bash,sh/bash,csh,csh,kshksh Python,Python,Perl,Perl,tcl/tk,tcl/tk,sed,sed,awk…awk… 开发工具开发工具 GCCGCC GNUGNUCCCompilerCompiler->->GNUGNUCompilerCompilerCollectionCollection GDBGDB GNUGNUDebuggerDebugger TheThegdbgdbcommandcommand 其他调试工具:其他调试工具:xxdgbxxdgb BinaryBinaryutilitiesutilities as,as,ld,ld,ar…ar… MakeMake apt-getapt-getinstallinstallbuild-essentialbuild-essential workbenchworkbench IDE Emacs/xemacs Eclipse Kdevelop Kylix3 命令行 Editor:vi/vim/gvim,emacs/xemacs SourceReader:vi/emacs+ctags/etags;source navigator ConfigureTools:automake,autoconf,m4 从程序员角度看从程序员角度看LinuxLinux 系统调用和函数库系统调用和函数库 系统调用系统调用————属属LinuxLinux内核内核 LinuxLinux内核的对外接口,用户程序和内核之内核的对外接口,用户程序和内核之 间唯一的接口间唯一的接口 系统调用可以实现从用户态到核心态的转系统调用可以实现从用户态到核心态的转 变变 系统调用有系统调用有300300多个多个 manmansyscallssyscalls查看所有的系统调用查看所有的系统调用 manman22系统调用名,如系统调用名,如manman22openopen 不同系统调用所需的头文件不同不同系统调用所需的头文件不同 系统调用所需的头文件存放在系统调用所需的头文件存放在/usr/include/usr/include 及其子目录或及其子目录或/usr/include/sys/usr/include/sys中中 系统底层开发、进程管理等方面的涉及系统底层开发、进程管理等方面的涉及 系统内部操作的问题,一般利用系统调系统内部操作的问题,一般利用系统调 用,可以提高程序的执行效率用,可以提高程序的执行效率 函数库(函数库(glibcglibc))————不属操作系统内核不属操作系统内核 依赖于系统调用依赖于系统调用 建立在系统调用的上层,提供的功能比系统建立在系统调用的上层,提供的功能比系统 调用强,使用也比较方便调用强,使用也比较方便 库文件是编写用来进行代码重用的预编译的库文件是编写用来进行代码重用的预编译的 函数的集合函数的集合 查找库函数查找库函数 manman33库函数名,如库函数名,如manman33fopenfopen 库函数的头文件包含在库函数的头文件包含在usr/includeusr/include下下 相应的库存放在相应的库存放在liblib或或usr/libusr/lib下下 一般应用程序调用库函数实现一般应用程序调用库函数实现 函数库分两大类函数库分两大类 静态库(静态库(.a.a))————gccgcc++arar 动态库动态库//共享库(共享库(.so.so))————gccgcc 函数库命名函数库命名 库文件的名字通常是以库文件的名字通常是以liblib开始的开始的,,余下的余下的 部分表示这个库是什么,最后的部分是以部分表示这个库是什么,最后的部分是以.. 开始的用来表明这个库的类型。如:开始的用来表明这个库的类型。如:libc.solibc.so 标准标准cc库,库,libm.solibm.so代表算术库代表算术库 调用关系调用关系 调用方式调用方式 编程中要包含系统调用或库函