
02案例指导手册-第一章入门与工具.doc
23页第一节gcc编译器应用案例001: gcc编译器指令题目/任务1. 练习/熟悉gcc命令的使用知识点说明/训练要点1. man手册的使用2. gcc命令的使用实现步骤1 •使用man手册,获取gcc使用帮助2. 使用gcc -help,获取简单的使用帮助实现指导1 •在终端中输入man gcc,获取帮助文档 命令行:man gcc2. 在终端中输入gcc -help,获取简单帮助 命令行:gcc —help应用案例002:编译连接成执行文件题目/任务1・练习/熟悉gcc编译连接代码生成可执行文件知识点说明/训练要点1. 基本的编译执行文件的指令2. gcc命令的使用实现步骤1 .编写2个.c文件,使用gcc生成可执行文件2. 使用・o选项指定输岀文件的名字3. 使用・x选项指定编译文件时所使用的语言4. 使用・std二选项指定语言标准5. 使用・ansi等同于-std=iso9899:1990选项6. 使用readelf执行显示可执行文件的所有信息实现指导1 •创建目录,编写main.c与func.c文件 命令行:mkdir chOl cd chOl mkdir secOl cd secOl vi main.c vi func.c2. 使用gcc命令编辑一个和多个源文件 命令行:gcc main.cgcc main.c func.c3. 使用・o选项指定输岀文件的名字 命令行:gcc -o main main.cgcc -o main main.c func.c4. 使用・x选项指定编译文件时所使用的语言 命令行:gcc -x c main.cgcc -x C++ main.c gcc ・x C++ -lstdc++ main.c5. 使用・std=选项指定语言标准命令行:gcc -std=c89 main.cgcc -std=c99 main.cgcc ・std=c9x main.cgcc -std=c97 main.cgcc -std = iso9899:1990 main.c6. 使用・ansi选项命令行:gcc -std = iso9899:1990 main.cgcc -std = iso9899:1990 ・ansi main.cgcc ・ansi main.cgcc ・std=c99 ・ansi main.c7. 使用readelf执行显示可执行文件的所有信息 命令彳亍:readelf -a main应用案例003:编译目标文件题目/任务1. 练习/熟悉gcc编译目标文件知识点说明/训练要点1. 基本的编译执行文件的指令2. gcc命令的使用实现步骤1. 使用・c选项编译.h文件和.c文件2. 使用objdump命令显示目标文件的相关工具实现指导1. 使用・c选项编译.h文件和.c文件命令行:vi main.hgcc -c main.hgcc ・c main.c gcc -o main main.o2. 使用objdump命令显示目标文件的相关工具 命令行:objdump -d main.o应用案例004:生成汇编与预处理文件题目/任务1 •练习恿悉gcc编译生成汇编与预处理文件知识点说明/训练要点1. 基本的编译执行文件的指令2. gcc命令的使用实现步骤1. 使用・S选项生成汇编文件名为.s文件2. 使用・E选项生成预处理文件名j(C)或.ii(C++)3. 使用gcc处理汇编文件和预处理文件实现指导1. 使用选项生成汇编文件名为.s文件 命令行:gcc -S main.c2. 使用・E选项生成预处理文件名.i(C)或ii(C++) 命令彳亍:gcc -E -o main.i main.c3. 使用gcc处理汇编文件和预处理文件 命令彳亍:gcc -o main main.igcc ・o main main.s应用案例005: gcc的预处理与内置宏题目/任务1. 练习/熟悉gcc的预处理与内置宏知识点说明/训练要点1. cpp命令查看代码中定义的宏2. gcc命令的使用实现步骤1. 使用cpp命令查看与代码无关的宏2. 使用cpp命令查看与代码有关的宏3. 使用cpp命令列出目标规则实现指导1. 使用cpp命令查看与代码无关的宏命令行:cpp -dM /dev/nullgcc -E -dM /dev/null2. 使用cpp命令查看与代码无关的宏命令行:卬p -dM ./main.cgcc -E -dM ./main.c3. 使用cpp命令列出目标规则命令行:cpp -MM -E main.cgcc ・E main.ccpp -MM main.c应用案例006:编译并使用静态库题目/任务1. 练习/熟悉编译并使用静态库知识点说明/训练要点1. 制作静态库2. 使用静态库3. 使用与编译器有关的小工具实现步骤1・创建tools.c与funcs.c文件,使用gcc -c生成.o目标文件2. 使用ar工具归档成.a静态库文件3. 按照目标文件的方式使用静态库4. 按照库的方式使用静态库5. 强制使用静态库编译6. 使用Idd工具显示程序调用的动态库7. 使用nmTM列出目标文件中的符号实现指导1 •创建tools.c与funcs.c文件,使用gcc -c生成.0目标文件 命令行:vi funcs.cvi tools.c vi usestatic.c gcc ・c tools.cgcc ・c funcs.c2. 使用ar工具归档成.a静态库文件命令行:ar -r libmyku.a tools.o funcs.o3. 按照目标文件的方式使用静态库命令彳亍:gcc -o main libmyku.a usestatic.c gcc -o main usestatic.c libmyku.a4. 按照库的方式使用静态库命令彳亍:gcc -0 main usestatic.c -Imyku -L.5. 强制使用静态库编译命令彳亍:gcc -0 main ・L. -static usestatic.c -Imyku6. 使用Idd工具显示程序调用的动态库命令行:gcc -0 main -L. -static usestatic.c -Imyku -staticIdd maingcc -0 main ・L.・static usestatic.c -ImykuIdd main7. 使用nm工具列出目标文件中的符号 命令行:nm libmyku.a应用案例007:编译并使用动态库题目/任务1. 练习感悉编译并使用动态库 知识点说明/训练要点1. 制作动态库2. 使用动态库实现步骤1 •创建调用动态库的usesso.c文件2. 使用gcc命令生成动态库libmydllku.so3. 按照目标文件使用动态库4. 按照库文件使用动态库5.设置环境变量 LD_LIBRARY_PATH,运行 main实现指导1・创建调用动态库的usesso.c文件命令行:vi usesso.c2. 使用gcc命令生成动态库libmydllku.so命令彳亍:gcc -o libmydllku.so -shared -fpic funcs.c tools.c3. 按照目标文件使用动态库命令行:gcc -o main libmydllku.so usesso.cIdd main4. 按照库文件使用动态库命令彳亍:gcc ・o main ・L. -Imydllku usesso.cIdd maingcc ・o main -static libmydllku.so usesso.c5. 设置环境变量LD_LIBRARY_PATH,运行main命令行:(注:可在/etc/profile 中加入 export LD_LIBRARY_PATH = .) export LD_LIBRARY_PATH=.Idd main./mai n应用案例00&运行时加载动态库题目/任务1. 练习/熟悉运行时动态库加载知识点说明/训练要点1. 掌握动态库加载相关函数实现步骤1. 仓曬dl2.c文件,并生成动态库2. 创建怕stdl.c文件,编译,执行,查看结果实现指导1. 创建d2c文件,并生成动态库 命令行:vi dl2.cgcc -o libdll.so -shared -fpic dl2.c2. 创建testdl.c文件編译,执行,查看结果 命令行:vi testdl.cgcc -o main testdl.c ・ldl ./mai n应用案例009: gcc编译器的语法扩展题目/任务1. 练习/熟悉gcc编译器的语法扩展知识点说明/训练要点1. 基本语法扩展2. 特殊属性声明实现步骤1. 创建d2c文件,并生成动态库2. 仓曬testdl.c文件編译,执行,查看结果3. 创建cattributel.c文件,了解常见变量属性4. 创建cattribute2.c文件,了解常见函数属性实现指导1. 创建cextends.c文件,了解基本语法扩展命令行:vi cextends.cgcc ・o main cextends.c./main2. 仓曬cattribute.c文件,了解常见类型属性 命令行:vi cattribute.cgcc cattribute.c./a.out3. 创建cattributel.c文件,了解常见变量属性 命令行:vi cattributel.cgcc cattributel.c./a.out4. 仓腱cattribute2.c文件,了解常见函数属性 命令行:vi cattribute2.cgcc cattribute2.c./a.out应用案例010:其他编译选项题目/任务1. 练习/熟悉其他编译选项知识点说明/训练要点1. 检查语法的选项2. 打印编译中每个函数名与统计时间的选项3. 编译器打印时间统计的选项4. 编译器打印内存统计的选项实现步骤1. 使用・fsyntax・only选项,检查语法2. 使用・Q选项,打印编译中每个函数名与统计时间3. 使用-ftime-report选项,打印时间统计4. 使用・fmem・report选项,打印内存统计实现指导1. 使用・fsyntax・only选项,检查语法命令行1: gcc ・fsyntax-only cattribute.c2. 使用・Q选项,打印编译中每个函数名与统计时间 命令行:gcc -Q cattribute.c3. 使用・ftime・report选项,打印时间统计命令彳亍:gcc -ftime-report cattribute.c4. 使用・fmem・report选项,打印内存统计命令彳亍:gcc -fmem-report cattribute.c第二节基本格式输入输出应用案例011: printf格式输出题目/任务1. 练习/熟悉printf格式输岀知识点说明/训练要点1・printf格式输岀实现步骤1 •创建printf.c使用printf函数格式输岀小数和字符串2. 。












