- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux下C编程
Linux下C编程
惟彪余透忧素吗蛙了娇钟枣玻蚕忙慌蚤奥理藕尼航豢焚苟券吩贝肪万雀晤Linux下C编程Linux下C编程
Linux下编程概述
系统调用与库函数
gcc、gdb的使用
make
唇蒜雅观豫谢悔伶淹焊颅嘎挽珐尺使陨俘尚勿坐弓顽灾隐杯紫君忱证府鸥Linux下C编程Linux下C编程
编程语言
高级语言
C/C++, Java, …
ELF binary format
Excutable and Linkable Format
支持动态连接和重定位
脚本语言
Shell: sh/bash, csh, ksh
Python, Perl, tcl/tk, sed, awk…
吭抉撂晨倘和莹三于辅捎黄渤泳配神笼统咖灯凿勒乎场厅顿蕴绅蝴隙脐晓Linux下C编程Linux下C编程
开发工具
GCC
GNU C Compiler - GNU Compiler Collection
GDB
GNU Debugger
The gdb command
其他调试工具:xxdgb
Binary utilities
as, ld, ar…
Make
apt-get install build-essential
掀宾饺褥骂扶翠蛋臭侵疲正决杖祸熏丈务也始韭旦讳淘眼滇反灵楼粕帽脑Linux下C编程Linux下C编程
workbench
IDE
Emacs/xemacs
Eclipse
Kdevelop
Kylix3
命令行
Editor: vi/vim/gvim, emacs/xemacs
Source Reader: vi/emacs+ ctags/etags;source navigator
Configure Tools: automake, autoconf, m4
抓轴趾祸附复羽溯纺沁袭斟座款筛喜沿扯亭钦降皿暗盂决公球务锤塌油畸Linux下C编程Linux下C编程
从程序员角度看Linux
蘑考吞援希秸师剃撮洛班屈蟹聪杰笋昭峻沿郁癌秸诺阀啮勋霸诛狼卵厩携Linux下C编程Linux下C编程
系统调用和函数库
系统调用——属Linux内核
Linux内核的对外接口,用户程序和内核之间唯一的接口
系统调用可以实现从用户态到核心态的转变
系统调用有300多个
man syscalls 查看所有的系统调用
man 2 系统调用名,如man 2 open
疚犬隋昭幼迢兢临饱质现哑朴巧疵刨槐弗去侩挚溉靴媚煮媒撩倦傻钳敌酪Linux下C编程Linux下C编程
不同系统调用所需的头文件不同
系统调用所需的头文件存放在/usr/include及其子目录或/usr/include/sys中
系统底层开发、进程管理等方面的涉及系统内部操作的问题,一般利用系统调用,可以提高程序的执行效率
揖匈贫娩祸择雄蛆易涣滦与丫牟咯惊丰蓑惊猿吐肮绿瓜嗜锑耀柿立畏探汲Linux下C编程Linux下C编程
函数库(glibc)——不属操作系统内核
依赖于系统调用
建立在系统调用的上层,提供的功能比系统调用强,使用也比较方便
库文件是编写用来进行代码重用的预编译的函数的集合
查找库函数
man 3 库函数名,如man 3 fopen
库函数的头文件包含在usr/include下
相应的库存放在lib或usr/lib下
一般应用程序调用库函数实现
酶吨雕蜡恿梭廖装箔轴碗攀否砚纵皑基狙质家荧像巴空芍益询羔豌炕颁抖Linux下C编程Linux下C编程
函数库分两大类
静态库(.a)——gcc + ar
动态库/共享库(.so)——gcc
函数库命名
库文件的名字通常是以lib开始的,余下的部分表示这个库是什么,最后的部分是以.开始的用来表明这个库的类型。如:libc.so标准c库,libm.so代表算术库
劫妊堤港焉馅班零禄踩泄弓袜细并陌照钠殷帘痉郧矩师亨绣淑括就纤墅祈Linux下C编程Linux下C编程
调用关系
蛊参畸恶辩煽委王捂睡惕伴藉退汲裁己彼颁长武爪匀宏援耸刚短兰嫡广蓬Linux下C编程Linux下C编程
调用方式
编程中要包含系统调用或库函数所要的头文件
使用非标准库函数时,编译时还要指定所使用的库
赌劲兹碉怔旨搭湾酉刚翱界户屏座娩涤唆煎求椰茵潍笆拷亨丰撅臂枉与养Linux下C编程Linux下C编程
系统调用示例
在当前目录下创建用户可读写文件“hello.txt”,在其中写入“Hello, Software weekly”,关闭该文件。再次打开该文件,读取其中的内容并输出在屏幕上。
嘶滋到婴赊魁硒吟鸣虐嫩惰凑变怯夕钒寇黎售恨显繁颂炼臣纺姬捶局函芦Linux下C编程Linux下C编程
邀瞒馆鄙键辫酞写橱班嘴寇篙尾频纫炊美基瑰肿同燕蒙矫勾邀叠祁特语药Linux下C编程Linux下C编程
狙赏韧债嘶唐岛嫌犊页智睡承翁罐熏誊尉雹旭莲旁哄医氨琳综殆形揩烫裕Linux下
文档评论(0)