Linux Programming Prerequisite

Slides:



Advertisements
Similar presentations
第十届中小学 NOC 活动 学生竞赛项目 -- 信息科技类 程序设计 培 训 讲 义 孙建华. 要点  程序设计是技术与艺术相结合的赛项。每一 个程序都来源于一种观念、一个想法、一项 创意,其实现水平有赖于技术手段,其优劣 有赖于用户检验。程序设计的过程是表达和 表现作者创造性的过程。  本赛项的要点是:用户群体需求定位恰当的.
Advertisements

C/C++ 程序设计 吉林财经大学 管理科学与信息工程学院 李艳东 : Tel :
CH02 電腦軟體 介紹電腦軟體之概念 認識系統軟體、程式語言與軟體開發 認識作業系統的主要功能 認識作業系統的演進歷史 認識常用之應用軟體
Linux 安裝入門與基本管理 課程目標: 學習Linux平台下的安裝設定 與 建置一個基本的Linux伺服器
Unix 指令4.
C與C++ C++語言具有物件導向的功能,易於開發、撰寫與偵錯,成為重要系統的開發工具之一。
基础模块 模块一 程序设计基础 (一)开发环境部分.
上課教材 Database Slide Windows筆電 (32 bit)
ARM 嵌入式系统 第七章 嵌入式Linux.
培养目标 1.建立基本的程序设计概念体系,掌握基础程序设计方法。
6 Copyright © Oracle Corporation, All rights reserved. 维护控制文件.
第 2 章 初探 C++.
创新实验 课程说明 计算机学院 孙彤 计算机学院 张明.
第1讲 实验环境.
LINUX 环境下程序开发基础 曙光用户培训课程系列 课程时间:1.5小时 更新日期:2008年3月.
UNIX系統與資料庫安裝 Why UNIX 常用的工具程式介紹 資料庫的安裝.
第11章 gcc的使用与开发.
C++程序设计 主讲:王兴波教授 1.
Interfacing C/C++ and Python with SWIG
System Administration Practice Homework 2: Shell Programming
Linux Further.
APP課程:Android程式設計開發環境與工具介紹
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
Qtopia 编程部分要点分析 苗忠良.
PC2 安裝說明文件 2018/11/12.
台灣大學計算機及資訊網路中心 教學研究組 張傑生
Linux环境下程序编译 曙光信息产业(北京)有限公司.
安裝與設置 Android 發展環境 靜宜大學資工系 蔡奇偉副教授 ©.
陈炎 南京大学软件学院 Ant简介 Ant一个优秀的构建工具 Ant意思是Another Neat Tool 陈炎 南京大学软件学院
簡易 Visual Studio 2010 C++ 使用手冊
张吉豫 GNU编译工具链使用简介 张吉豫
中国散裂中子源小角谱仪 的实验数据格式与处理算法 报告人:张晟恺 中国科学院高能物理研究所 SCE 年8月18日
Installation, advance wireless module and evaluation 2008/11/11
第一章 C語言概論 本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載.
第 5 章、連結與載入 作者:陳鍾誠 旗標出版社.
第一章 認識Java Java 程式設計入門(I).
Native Development Kit
编译原理专题实验 2013 西安交通大学.
第三章 项目设定.
臺北市立大學 資訊科學系(含碩士班) 賴阿福 CS TEAM
永远的 Autotools ——GNU Build System 简介(一)
第1章、系統軟體 作者:陳鍾誠 旗標出版社.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Gzip 编译及调试 Speaker: Lei Zhao (赵雷) September 13, 2006
簡易 Visual Studio 2005 C++ 使用手冊
Linux核心編譯與模組管理 2013/01/19.
Submit Meego Application for Intel AppUP(SM)Center
服務於中國研究的網絡基礎設施 A Cyberinfrastructure for Historical China Studies
第 1 章 Java 簡介.
东软集团(大连)有限公司 SVVD事业部-于忠华
利用ICE通信中间件构建分布式应用程序开发框架
Gzip编译及调试 曹益华
序及第0章.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
開發Java程式語言的工具 JDK.
ARM Developer Suite 介 绍.
課程報告 使用開放原始碼工具實作軟體產品線方法
杨振伟 清华大学 第一讲:Linux环境下编程(1)
实验一:编译运行Linux内核并使用gdb进行调试
第二章ADS1.2开发环境创建与简介.
C++程序设计 概述 潘荣江 山东大学软件学院.
编译原理 第一章 引 论 南京大学计算机科学与技术系 戴新宇.
程式語言簡介 2019/7/17 明乘中學編製.
杨振伟 清华大学 第一讲:Linux环境下编程(1)
嵌入式Linux编程环境.
Usage Eclipse 敏捷方法工具介紹 實驗室網站:
第三章 计算机体系结构.
Section 1 Basic concepts of web page
Presentation transcript:

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

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

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相同.

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

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

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

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: Front ends and back ends 4 stages of 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 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: Basic options: gcc [options] [filename] -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就执行make make 不退出gdb就执行shell命令 shell 中止正在调试的程序 kill 执行当前调试的程序 run 推出gdb quit 临时显示表达式的值 print 显示表达式的值 display 打开要调试的文件 file 执行一条语句,是函数则进入函数内部 step 执行一条语句但不进入函数内部 next 列出源代码的一部分 list 设置断点,可以是行号、函数名及地址(以*开头) tbreak: 设置临时断点 break/tbreak

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

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

Makefile Makefile: Example: 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 Using "info make" macros/variables implicit/suffix rules subdirectories archive Using "info make"