Presentation is loading. Please wait.

Presentation is loading. Please wait.

Linux 软件开发工具简介 设计 编码/调试 部署 维护.

Similar presentations


Presentation on theme: "Linux 软件开发工具简介 设计 编码/调试 部署 维护."— Presentation transcript:

1 Linux 软件开发工具简介 设计 编码/调试 部署 维护

2 小组成员与分工 周清博:Emacs, GNU Autotools. 普林强:Subversion 张磊/陆军军:Bugzilla
万青:gdb调试 罗利维:UML工具

3 工作概览

4 设计-ArgoUML(Tigris.org)
纯Java编写,平台无关 符合UML标准 XMI,OCL支持 正向、反向工程 主要面向Java语言,也有C++、C#、PHP的模块 本项目用纯C语言编写,且规模很小,所以只简单地画了一下几个结构的内容

5

6 编码/调试 ChangeLog(C-x v a) 程序用 C 语言编写,利用了 GTK+ 2.0,声音用esd库 用emacs作代码编辑器
强大的语法高亮功能,可以对C/C++,Makefile等着色,方 便阅读 代码格式化功能,包括注释 良好的扩展性 编译 调试(GUD) 方便地添加文件头 ChangeLog(C-x v a) 代码自动补全

7 Emacs-语法加亮

8 Emacs-格式化代码 M-; 插入注释 CC-MODE, GNU, K&R, Stroustrup, ... 多行函数参数
空行缩进与下行代码保持一致 合适地处理长注释(M-q) CC-MODE, GNU, K&R, Stroustrup, ...

9 编译 M-x compile 默认命令为 make -k 可方便地从编译错误跳到错误处 C-x `移动到下一个出错处

10 Emacs GUD-调试 可视化的调试 tooltip支持

11

12 自动补全代码 Xrefactory Senator Semantic-ia Speedbar ... 正确地分析项目中源代码语义,补全代码
代码浏览 非开源($400),免费试用 Senator Semantic-ia Speedbar ...

13 GNU Autotools Autoscan Aclocal Libtoolize Autoconf Autoheader Automake
自动完成项目的配置、编译与部署 仅需少量的手工工作 组件: Autoscan Aclocal Libtoolize Autoconf Autoheader Automake

14 目录结构 audio src AUTHORS COPYING NEWS ChangeLog README INSTALL ./audio:
fixup.wav readygo.wav fadelayer.wav lost.wav transform.wav ./src: figure.h grid.h global.h sound.c square.c tetris.c square.h figure.c grid.c sound.h

15 Makefile.am bin_PROGRAMS = tetris tetris_SOURCES = tetris.c \
./src Makefile.am bin_PROGRAMS = tetris tetris_SOURCES = tetris.c \ global.h \ figure.c \ figure.h \ grid.c \ grid.h \ sound.h \ sound.c \ square.c \ square.h tetris_CFLAGS = -Wall -g --ansi \ `pkg-config --cflags gtk+-2.0` \ -DDATADIR=\"$(datadir)\" tetris_LDFLAGS = `pkg-config --libs \ gtk+-2.0 gthread-2.0 esound` Top dir SUBDIRS = src audio ./audio audiodir = $(datadir)/tetris/audio audio_DATA = fadelayer.wav \ fixup.wav \ lost.wav \ readygo.wav \ transform.wav EXTRA_DIST = $(audio_DATA)

16 Autoscan 在源代码顶层目录运行autoscan 顶层目录中生成一个文件configure.scan
修改configure.scan,并重命名为configure.ac

17 configure.ac AC_PREREQ(2.59) AC_INIT(tetris, 0.1.0, xyzzqb@ustc.edu)
AC_CONFIG_SRCDIR([src/tetris.c]) AC_CONFIG_HEADER([config.h]) AC_CONFIG_AUX_DIR([gnubuild]) AC_PROG_LIBTOOL AM_INIT_AUTOMAKE # Checks for programs. AC_PROG_CC # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([stdlib.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE # Checks for library functions. AC_FUNC_MALLOC AC_CONFIG_FILES([Makefile audio/Makefile src/Makefile]) AC_OUTPUT

18 autoreconf aclocal --output=aclocal.m4t libtoolize --copy --force
运行命令autoreconf --install --force 相当于: aclocal --output=aclocal.m4t libtoolize --copy --force autoconf --force autoheader --force automake --add-missing --copy --force-missing

19 可以安装了! 如同大部分的Linux软件发行一样 可以在顶层目录运行./configure命令
这一步,根据参数prefix(可选)确定了datadir这个宏的值 因此在编码时就可以确定声音文件的路径为datadir “/tetris/audio/” 下一步编译:make 安装:make install

20 发布我们的软件 make dist 生成tetris-0.1.0.tar.gz Tar zxvf tetris-0.1.0.tar.gz
这就是我们在Linux中安装软件时下载下来的一般格式,看起来内容很繁琐,其实都是GNU Autotools生成的 用户下载下来这个文件以后 Tar zxvf tetris tar.gz Cd tetris-0.1.0 ./configure && make && make install 就可以玩游戏了。。 这是用gzip压缩的,在configure.ac中把那行换成 AM_INIT_AUTOMAKE(dist-bzip2) 就可以生成用bzip2压缩的文件,一般体积更小

21 关于autotools Autobook: http://sources.redhat.com/autobook/ Helloworld:
功能强大,方便实用 学习曲线陡峭,我们也只知皮毛 实用的资源: Autobook: Helloworld: 01/26/ &mode=thread&tid=46 3/11/14/ shtml?tid=46 相关的Mailing list 最后,如果你照着tutorial用autotools发现了莫名其妙的问题,很可能是autoconf和automake版本不一致,重装吧

22 再说gdb Watch point Watch Rwatch Awatch 和一般Unix程序一样的TAB自动补全功能 命令自动执行
附到运行的程序中

23 命令自动执行 (gdb) commands 1 Type commands for when breakpoint 1 is hit, one per line. End with a line saying just "end". >print i >print j >end (gdb) run Starting program: /home/flimsy/programming/a.out Breakpoint 1, main () at test.c:5 int i = 0, j; $1 = $2 = (gdb)

24 More Info about gdb Linux下的工具比Windows中的更能有机地结合,从而组成更加强大的功能
gdb可以方便地扩展为GUI界面,而Windows下的VC等IDE的调试器却不能提供如gdb的命令接口 Resouces: Books(gdb命令非常多) n/


Download ppt "Linux 软件开发工具简介 设计 编码/调试 部署 维护."

Similar presentations


Ads by Google