兴海北路
---男儿仗剑自横行
C++博客
首页
新随笔
联系
聚合
管理
<
2008年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
统计
随笔 - 85
文章 - 0
评论 - 17
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(6)
给我留言
查看公开留言
查看私人留言
随笔分类
链接
(rss)
随笔档案
2015年1月 (1)
2010年6月 (1)
2010年5月 (3)
2010年1月 (2)
2009年3月 (3)
2009年1月 (2)
2008年11月 (2)
2008年8月 (2)
2008年7月 (4)
2008年6月 (2)
2008年5月 (3)
2008年4月 (12)
2008年3月 (48)
收藏夹
资源(4)
(rss)
全是知识啊
Linux静态/动态链接库的创建和使用
http://www.advancedlinuxprogramming.com/alp-folder
LINUX动态链接库高级应用
Linux软件下载源码编程文章资料
MDA之路的Blog
socket网络教学篇
Socket中如何设置连接超时
高级shell编程指南
高级shell编程指南pdf版
搜索
最新评论
1. re: Linux命令行上程序执行的那一刹那!
写的太好了,赞!
--chaosink
2. re: 基于C API的MySQL数据库多线程访问方法
memset(&myData, 0, sizeof(MYSQL))
应该为: memset(myData, 0, sizeof(MYSQL))
--ysw
3. re: 一个多线程web服务器实例(C,Linux,详细的web服务器原理)
只能访问一次,第二次访问就出错.
--OverSeven
4. re: (转)用NET-SNMP软件包开发简单客户端代理
@王强
我也想要,,,求流程图。。。qq1055627154,,,谢谢啊
--曹国亮
5. re: 实现函数y=x*x的图形与圆的图形叠加显示
评论内容较长,点击标题查看
--罗
阅读排行榜
1. 10个评委打分,去掉一个最高分,去掉一个最低分,求平均分,并对评委进行评判(8195)
2. C语言:getopt_long()函数的作用(7886)
3. (转)用NET-SNMP软件包开发简单客户端代理(7845)
4. GCC编译背后(第二部分:汇编和链接)(7449)
5. shell编程范例之布尔运算(5967)
评论排行榜
1. GCC编译背后(第二部分:汇编和链接)(3)
2. shell编程范例之数值运算(2)
3. linux下c语言学习笔记——操作mysql(2)
4. (转)用NET-SNMP软件包开发简单客户端代理(2)
5. 10个评委打分,去掉一个最高分,去掉一个最低分,求平均分,并对评委进行评判(2)
Linux下C语言程序开发过的程视图
by falcon<zhangjinw@gmail.com>
2008-03-01
到今天,关于"Linux下C语言开发过程"的一个简单视图总算粗略的完成了,从寒假之前的一段时间到现在过了将近一个月左右吧。写这个主题的目的源自 “shell编程范例之进程操作”,当我写到“shell编程范例之进程操作”这一节时,“突然”对进程的由来、本身和去向感到“迷惑不解”。所以想着好 好花些时间来弄清楚它们,现在发现,这个由来就是这里的程序开发过程,进程来自一个普通的文本文件,在这里是C语言程序,C语言程序经过编辑、预处理、编 译、汇编、链接、执行而成为一个进程;而进程本身呢?当一个可执行文件被执行以后,有了exec调用,被程序解释器映射到了内存中,有了它的内存映像;而 进程的去向呢?通过不断的执行指令和内存映像的变化,进程完成着各项任务,等任务完成以后就可以退出了(exit)。
这样一份视图实际上是在寒假之前绘好的,你可以从附件中看到它;不过到现在才明白背后的很多细节。这些细节就是下面的这些blogs,你可以对照“视图”来阅读它们。
1、
把VIM打造成源代码编辑器
(源代码编辑过程:用VIM编辑代码的一些技巧)
2、GCC编译的背后
第一部分:预处理和编译
第二部分:汇编和链接
(编译过程:预处理、编译、汇编、链接)
3、
程序执行的那一刹那
(执行过程:当我们从命令行输入一个命令之后)
4、
进程的内存映像
(进程加载过程:程序在内存里是个什么样子)
5、
动态符号链接的细节
(动态链接过程:函数puts/printf的地址在哪里)
6、
代码测试、调试与优化小结
(程序开发过后:内存溢出了吗?有缓冲区溢出?代码覆盖率如何测试呢?怎么调试汇编代码?有哪些代码优化技巧和方法呢?)
7、
为你的可执行文件“减肥”
(从"减肥"的角度一层一层剖开ELF文件)
8、
进程和进程的基本操作
(关于进程本身的相关操作,主要是介绍了一些shell命令)
需要补充的是,“高等数学”(higher mathematics)、“线性代数”(linear algebra)、“数据结构”(data structure)、“数学建模”(mathematical modeling)、“设计模式”(design pattern)、“算法”(algorithm)、“离散数学”(discrete mathematics)、“数学分析”( mathematical analysis)等应该是程序设计必备的一些知识,在掌握相关工具的同时,这些相关的理论课程也需要很好的熟悉。
欢迎大家一起交流和探讨。
PS: 因为时间关系,很多blog都写得比较仓促,里头有错别字甚至是语义表达不清晰的地方,敬请原谅,我会逐步花时间进行检查的。
推荐资料
[1] mathematical modeling
http://jpkc.nwu.edu.cn/sxjm/yxal.htm
[2] design pattern
[3] algorithm
http://oss.lzu.edu.cn/blog/blog.php?/do_showone/tid_338.html
posted on 2008-03-14 15:17
随意门
阅读(553)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理