如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
LinuxLinux下下CC编程编程LinuxLinux下编程概述下编程概述系统调用与库函数系统调用与库函数gccgcc、、gdbgdb的使用的使用makemake编程语言编程语言高级语言高级语言C/C++,C/C++,Java,Java,……ELFELFbinarybinaryformatformatExcutableExcutableandandLinkableLinkableFormatFormat支持动态连接和重定位支持动态连接和重定位脚本语言脚本语言Shell:Shell:sh/bash,sh/bash,csh,csh,kshkshPython,Python,Perl,Perl,tcl/tk,tcl/tk,sed,sed,awk…awk…开发工具开发工具GCCGCCGNUGNUCCCompilerCompiler->->GNUGNUCompilerCompilerCollectionCollectionGDBGDBGNUGNUDebuggerDebuggerTheThegdbgdbcommandcommand其他调试工具:其他调试工具:xxdgbxxdgbBinaryBinaryutilitiesutilitiesas,as,ld,ld,ar…ar…MakeMakeapt-getapt-getinstallinstallbuild-essentialbuild-essentialworkbenchworkbenchIDEEmacs/xemacsEclipseKdevelopKylix3命令行Editor:vi/vim/gvim,emacs/xemacsSourceReader:vi/emacs+ctags/etags;sourcenavigatorConfigureTools: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代表算术库代表算术库调用关系调用关系调用方式调用方式编程中要包含系统调用或库函