. .
. ! .
Linu*下开发根底知识
touch命令:可用于新建文件,如; touch /tmp/zhang**t
关于volatile的介绍 (类型修饰符,指令关键字)
由于存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进展优化。编译器优化常用的方法有:将存变量缓存到存放器;调整指令顺序充分利用CPU指令流水线,常见的是重新排序读写指令。对常规存进展优化的时候,这些优化是透明的,而且效率很好。由编译器优化或者硬件重新排序引起的问题的解决方法是在从硬件〔或者其他处理器〕的角度看必须以特定顺序执行的操作之间设置存屏障〔memory barrier〕,linu* 提供了一个宏解决编译器的执行顺序问题。
2. void Barrier(void)
这个函数通知编译器插入一个存屏障,但对硬件无效,编译后的代码会把当前CPU存放器中的所有修改正的数值存入存,需要这些数据的时候再重新从存中读出。
3. volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以消除一些代码。但有时这些优化不是程序所需要的,这时可以用volatile关键字制止做这些优化。
gcc and g++分别是GNU的c & c++编译器。
. .
. ! .
gcc/g++在执行编译的时候一般有下面4步:
⒈预处理,[预处理器cpp];
⒉将预处理后的文件转换成汇编语言,[编译器egcs];
⒊由汇编变为目标代码〔机器代码〕[汇编器as];
⒋连接目标代码,生成可执行程序[器ld];
gcc编译流程分为4个步骤,分别为:
预处理〔Pre-Processing〕
编译〔piling〕
汇编〔Assembling〕
〔Linking〕
g++ -o -c -g功能
-o:指定生成可执行文件的名称。使用方法为:g++ -o afile ... 〔可执行文件不可与待编译或文件同名,否那么会生成相应可执行文件且覆盖原编译或文件〕,如果不使用-o选项,。
-c:只编译不,只生成目标文件。
-g:添加gdb调试选项。
Linu*下C语言应用编程
文件I/O编程
多进程编程的根本知识,核心是fork、e*ec、wait三大系统的调用;〔可能需要补充操作系统进程并发运行的根本知识〕
进程间通信的几种方法:信号,管道,共享存,信号量,消息队列。〔最重要的是信号和管道〕
. .
. ! .
多线程编程的根底知识;
网络编程:socket编程, TCP socket编程和UDP socket编程;
开发工具〔包括:编辑器vim、编译器gcc、调试器gdb、工程管理工具autoconf、程序库的制作等〕;
编译器vim的三种模式:
切换到编辑模式的四种方式,编辑模式可以输入任意容
a 光标
linux应用编程基础学习 来自淘豆网m.daumloan.com转载请标明出处.