Upload
deion
View
88
Download
1
Embed Size (px)
DESCRIPTION
Jianjian SONG Software Institute, Nanjing University Sept. 2004. Linux Programming Prerequisite. Contents. Overview of Linux Programming Using gcc & gdb Make & Makefile. Programming Language. High-level Language C/C++, Java, Fortran… ELF binary format Excutable and Linkable Format - PowerPoint PPT Presentation
Citation preview
Linux Programming Prerequisite
Jianjian SONGSoftware Institute, Nanjing UniversitySept. 2004
Contents
Overview of Linux Programming Using gcc & gdb Make & Makefile
Programming Language
High-level Language 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…
Development ToolsGCC
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
Workbench
IDE Emacs/xemacs Kdevelop Eclipse Kylix3
Command line Editor: vi/vim/gvim, emacs/xemacs, pico Source Reader: source navigator; vi/emacs+
ctags/etags Configure Tools: automake, autoconf, m4
文件子系统
用户
硬 件 控 制
硬 件
内核
Shell
用户
用户
用户
高级语言和实用程序
系统调用
进程管理子系统
进程间通信
存储管理
调度程序
设备驱动程序字符设备 块设
备
高速缓存
核外程序
A User’s Viewpoint
A C Programmer’s Viewpoint
System Calls and Libraries
系统调用 Linux 内核的对外接口;用户程序和内核之
间唯一的接口 函数库
依赖于系统调用 一般来说,标准函数库建立在系统调用的上
层,提供的功能比系统调用强,使用也比较方便。
例:标准 I/O 库
Libraries and Head Files
Static Libraries (.a files) Lab (gcc + ar)
Dynamic Libraries/Shared Objects (.so files) Lab (gcc)
GCC GCC:
GNU C Compiler -> GNU Compiler Collection http://gcc.gnu.org
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)
File Name Suffix (1)
Assembler code which must be preprocessed
.S
Assembler code.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
File Name Suffix (2)
Dynamic library file (shared object).so
Static library file (archive file).a
Object file.o
GCC options (1) Usage:
gcc [options] [filename] Basic options:
-E: 只对源程序进行预处理 ( 调用 cpp 预处理器 ) -S: 只对源程序进行预处理、编译 -c: 执行预处理、编译、汇编而不链接 -o output_file: 指定输出文件名 -g: 产生调试工具必需的符号信息 -O/On: 在程序编译、链接过程中进行优化处理 -Wall: 显示所有的警告信息
GCC options (2)
Basic options: -Idir: 指定额外的头文件搜索路径 -isystem dir -Ldir: 指定额外的库文件搜索路径 -lname: 链接时搜索指定的库文件 -DMACRO[=DEFN]: 定义 MACRO 宏
GDB
GDB: GNU Debug 设置断点 监视变量值 单步执行 修改变量值
gdb commands
不退出 gdb 就执行 makemake
不退出 gdb 就执行 shell 命令shell
中止正在调试的程序kill
执行当前调试的程序run
推出 gdbquit
临时显示表达式的值print
显示表达式的值display
打开要调试的文件file
执行一条语句,是函数则进入函数内部step
执行一条语句但不进入函数内部next
列出源代码的一部分list
设置断点,可以是行号、函数名及地址 ( 以 * 开头 )tbreak: 设置临时断点
break/tbreak
Quiz
从标准输入 (stdin/cin) 输入 10 个 ( 或n 个 , n 不定 ) 整数,排序后打印到标准输出。 C/C++ 均可 注明采用的数据结构、排序算法
make & makefile
Multi-file project IDE make
make & makefile makefile 描述模块间的依赖关系; make 命令根据 makefile 对程序进行管理
和维护; make 判断被维护文件的时序关系
Makefile
Makefile : Dependency(target,
prerequisites) Rule(command(s))
Example :
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).
makefile extensions
Makefile extensions macros/variables implicit/suffix rules subdirectories archive
Using "info make"