1、#ifndef STARFUN_H#define STARFUN_H#define NUM 4#define NUMBER 3int star1() int i,j,k; for(k=1;k=NUM;+k) for(i=1;i=(NUM-k);+i) printf( ); for(j=1;j=0;-k) =(NUMBER-k+1); printf(#endifB. hello.h文件内容如下:/*hello.h*/#ifndef HELLO_H#define HELLO_Hvoid hello() star1(); printf(hello,my friendsn C. hello.c 文件内
2、容如下:void showhello() hello();D. star.c文件内容如下:#include starfun.hhello.h#include int main() star2(); showhello();2使用gcc编译器,编译程序操作步骤(1)第一种方法:分步进行A由star.c starfun.h 文件生成star.o 目标文件:gcc -c star.c -o star.oB由hello.c hello.h starfun.h生成hello.o目标文件gcc -c hello.c -o hello.oC由hello.o star.o 生成应用程序myproggcc st
3、ar.o hello.o -o myprog D执行应用程序myprogrootlocalhost 01_hello# ./myprog 执行情况截图:(2) 一条命令完成以上操作: A.执行清屏命令: clear B输入命令生成可执行程序myprog : gcc star.c hello.c -o myprog C执行程序myprog,其命令是: ./myprog :D执行情况截图:3常见选项的应用(1)写出-Wll选项的作用: 允许发出gcc提供的所有有用的报警信息 (2)写出-w选项的作用:关闭所有警告信息 (3)写出-v选项的作用并执行:打印出编译器内部编译各过程的命令行信息和编译器的
4、版本(4)测试选项,列出结果:rootlocalhost 01_hello# gcc star.c hello.c -o myprogrootlocalhost 01_hello# gcc -w star.c hello.c -o myprogrootlocalhost 01_hello# gcc -Wall star.c hello.c -o myprog4使用动态库(1)rootlocalhost 01_hello# gcc -c -fpic hello.crootlocalhost 01_hello# ls(2)rootlocalhost 01_hello# gcc -shared -s
5、 -o libhello.so hello.o (3)注意libhello.so库文件的命名格式,(1)(2)也可以用下边命令替代gcc -fpic -shared -s hello.c -o libhello.so(4)rootlocalhost 01_hello# cp libhello.so /usr/lib 注意/usr/lib为用户库自动搜索路径(5)rootlocalhost 01_hello# gcc -lhello star.c -o mystarrootlocalhost 01_hello# ldd mystar libhello.so = /usr/lib/libhello
6、.so (0x4002d000) libc.so.6 = /lib/tls/libc.so.6 (0x42000000) /lib/ld-linux.so.2 = /lib/ld-linux.so.2 (0x40000000)rootlocalhost 01_hello# ./mystar * * *hello,my friends5使用静态库rootlocalhost 01_hello# rm *.orm:是否删除一般文件hello.o? Yrootlocalhost 01_hello# rm mystar 是否删除一般文件mystar?rootlocalhost 01_hello#root
7、localhost 01_hello# rm libhello.*rootlocalhost 01_hello# gcc -c hello.c -o hello.orootlocalhost 01_hello# ar -rc libhello.a hello.orootlocalhost 01_hello# gcc star.c libhello.a -o mystar6 调试器的使用(1)gdb进入experiment3 目录执行rootlocalhost 02_gdb# gcc -g star.c hello.c -o myprogrootlocalhost 02_gdb# gdb myp
8、rog(2) gdb相关操作A. 查看文件,在gdb中键入“l”(list)就可以查看所载入的文件B.设置断点 ,在gdb中设置断点非常简单,只需在“b”后加入对应的行号即可C.查看断点情况,在设置完断点之后,用户可以键入“info b”来查看设置断点情况,在gdb中可以设置多个断点D.运行代码,gdb默认从首行开始运行代码,可键入“r”(run)即可E.查看变量值,在gdb中只需键入“p”变量值即可F.单步运行,单步运行可以使用命令“n”(next)或“s”(step)G. 恢复程序运行,可以使用命令“c”(continue)恢复程序的正常运行了.7. 利用 GNU make 自动编译应用程
9、序方法1、利用文本编辑器创建hello.c文件int main() printf(Welcome WANGn return 1;2.利用文本编辑器创建一个makefile文件,并将其保存到与hello.c相同的目录下。CC=gccCFLAGS=all: hellohello: hello.o $(CC) $(CFLAGS) hello.o o hellohello.o: hello.c $(CC) $(CFLAGS) c hello.c o hello.oclean: rm rf hello *.o2、先后执行如下命令rootlocal$makerootlocal$lsrootlocal$./
10、hello3、执行make clean命令:rootlocal$make clean4、修改hello.c文件,重复第2、3步操作,查看并记录所生成的文件和运行结果,并与手动编译进行比较,写出你的结论。Makefile 可以在修改源文件后不用再次输入gcc调试命令,再次执行很方便。5、重新编辑makefile文件(斜黑体表示修改部分)OBJS=hello.o $(OBJS) $(CC) $(CFLAGS) $ -o $ $(CC) $(CFLAGS) c $ -o $6、重复第2,3步操作,查看并记录所生成的文件和运行的结果。比较这两种操作,写出你的结论。同时指出$ 、$、$在上述Makefile中的含义。7、多个.c文件的编译1)创建文件hello1.c、hello2.c、hello.h和makefile/hello1.cWelcome Emdoor! test2();/hello2.cinclude hello2.hvoid test2(void) hello2n/hello2.hvoid test2(void);# makefile test for multi files programOBJS=hello1.o hello2.ohello1.o: hello1.chello2.o: hello2.c2)先后执行如下命令三 .实验结论
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1