Presentation is loading. Please wait.

Presentation is loading. Please wait.

Linux Programming Prerequisite

Similar presentations


Presentation on theme: "Linux Programming Prerequisite"— Presentation transcript:

1 Linux Programming Prerequisite
Jianjian SONG Software Institute, Nanjing University Sept. 2004

2 Contents Overview of Linux Programming Using gcc & gdb Make & Makefile
这一节讲义可以简单些,多准备些例子!

3 Programming Language High-level Language Script C/C++, Java, Fortran…
ELF binary format Excutable and Linkable Format 工具接口标准委员会(TIS)选择了正在发展中的ELF体系上 不同操作系统之间可移植的二进制文件格式 Script Shell: sh/bash, csh, ksh Perl, Python, tcl/tk, sed, awk… 不严格对应的,通常也可分为编译型语言和解释型语言。 Linux下汇编语言: 汇编器 AS: AT&T 语法表达标准; 如果要采用与DOS接近的语法格式,就必须用 另一种汇编工具NASM (Netwide Assembler), NASM基本与MASM相同.

4 Development Tools GCC GDB Binary utilities Make
GNU C Compiler -> GNU Compiler Collection The gcc command: Front end GDB GNU Debugger The gdb command xxdgb, ddd… Binary utilities as, ld, ar, ldd… Make icc: Intel C/C++ Compiler

5 Workbench IDE Command line Emacs/xemacs Kdevelop Eclipse Kylix3
Editor: vi/vim/gvim, emacs/xemacs, pico Source Reader: source navigator; vi/emacs+ ctags/etags Configure Tools: automake, autoconf, m4

6 A User’s Viewpoint 用户 Shell 核外程序 高级语言和实用程序 系统调用 进程间通信 文件子系统 进程 管理 子系统
硬 件 控 制 硬 件 内核 Shell 高级语言和实用程序 系统调用 进程 管理 子系统 进程间通信 存储管理 调度程序 设备驱动程序 字符设备 块设备 高速缓存 核外程序 UNIX的结构

7 A C Programmer’s Viewpoint

8 System Calls and Libraries
系统调用 Linux内核的对外接口;用户程序和内核之 间唯一的接口 函数库 依赖于系统调用 一般来说,标准函数库建立在系统调用的上 层,提供的功能比系统调用强,使用也比较 方便。 例:标准I/O库

9 Libraries and Head Files
Static Libraries (.a files) Lab (gcc + ar) Dynamic Libraries/Shared Objects (.so files) Lab (gcc)

10 GCC GCC: Front ends and back ends 4 stages of gcc
GNU C Compiler -> GNU Compiler Collection Front ends and back ends Front ends: gcc, g++, gcj, g77, gnat Back ends: support various target 4 stages of gcc Preprocessing (cpp command) Compilation Assembly (as command) Linking (ld command)

11 File Name Suffix (1) Assembler code which must be preprocessed .S
C++ header file to be turned into a precompiled header .H .hh C or C++ header file to be turned into a precompiled header .h C++ source code which should not be preprocessed .ii C++ source code which must be preprocessed .cc .cp .cpp .CPP.c++ .C .cxx C source code which should not be preprocessed .i C source code which must be preprocessed .c

12 File Name Suffix (2) Dynamic library file (shared object) .so
Static library file (archive file) .a Object file .o

13 GCC options (1) Usage: Basic options: gcc [options] [filename]
-E: 只对源程序进行预处理(调用cpp预处理器) -S: 只对源程序进行预处理、编译 -c: 执行预处理、编译、汇编而不链接 -o output_file: 指定输出文件名 -g: 产生调试工具必需的符号信息 -O/On: 在程序编译、链接过程中进行优化处理 -Wall: 显示所有的警告信息

14 GCC options (2) Basic options: -Idir: 指定额外的头文件搜索路径 -isystem dir
-Ldir: 指定额外的库文件搜索路径 -lname: 链接时搜索指定的库文件 -DMACRO[=DEFN]: 定义MACRO宏

15 GDB GDB: GNU Debug 设置断点 监视变量值 单步执行 修改变量值

16 gdb commands 不退出gdb就执行make make 不退出gdb就执行shell命令 shell 中止正在调试的程序 kill
执行当前调试的程序 run 推出gdb quit 临时显示表达式的值 print 显示表达式的值 display 打开要调试的文件 file 执行一条语句,是函数则进入函数内部 step 执行一条语句但不进入函数内部 next 列出源代码的一部分 list 设置断点,可以是行号、函数名及地址(以*开头) tbreak: 设置临时断点 break/tbreak

17 Quiz 从标准输入(stdin/cin)输入10个(或n个, n 不定)整数,排序后打印到标准输出。 C/C++均可
注明采用的数据结构、排序算法

18 make & makefile Multi-file project make & makefile IDE make
make命令根据makefile对程序进行管理和维 护;make判断被维护文件的时序关系

19 Makefile Makefile: Example: Dependency(target, prerequisites)
Rule(command(s)) Example:

20 make make [-f filename] [targetname] Targets
A target is usually the name of a file that is generated by a program; examples of targets are executable or object files. A target can also be the name of an action to carry out, such as 'clean' (phony target).

21 makefile extensions Makefile extensions Using "info make"
macros/variables implicit/suffix rules subdirectories archive Using "info make"


Download ppt "Linux Programming Prerequisite"

Similar presentations


Ads by Google