【linux上机实验】实验六 Linux开发工具的使用

发布时间 2023-11-22 11:14:58作者: Cloudservice

【前 言】

愿,所有相遇,都恰逢其时!

愿,此刻心头,正满怀欣喜!

                 ---你好,朋友,欢迎你!

1. 用gcc带不同参数编译下列hello.c程序。

#include <stdio.h>
int main(){
	printf(”Hello World!\n”);
	return 0;
}

(1)只作预处理,不进行编译,相应命令为:gcc -E hello.c
(2)只进行编译,不做汇编,生成hello.s,命令为:gcc -S hello.c
(3)只生成目标文件,不做连接,生成hello.o,命令为:gcc -c hello.c
(4)以默认方式生成可执行程序a.out,命令为:gcc hello.c
(5)生成可执行程序hello.out,命令为:gcc -o hello.out hello.c
(6)生成可调试的可执行程序hello.out,命令为:gcc -g -o hello.out hello.c

gcc的常用选项:
 -c :只编译,不链接,生成目标文件“.o”。
 -S :只编译,不汇编,生成汇编代码“.S”。
 -E :只进行预编译/预处理,不做其他处理。
 -o file:输出文件名为file
 -g :在可执行程序中包含标准调试信息。
 -v :打印出编译器内部编译各过程的命令行信息和编译器的版本。
 -I dir :在头文件的搜索路径列表中添加dir目录
 -L dir :在库文件的搜索路径列表中添加dir目录
 -static :连接静态库(静态库也可以用动态库链接方式链接)
 -llibrary :连接名为library的库文件(显示指定需要链接的动态库文件)

2. Linux下用gcc的生成和使用动态库和静态库。

(1)	要求学生按下述给出的步骤,在命令行上运行给出的命令。
(2)	熟悉gcc编译运行c程序的三种思路,掌握静态库、动态库的创建和使用。
程序1: hello.h
#ifndef HELLO_H 
#define HELLO_H 
  void hello(const char *name); 
 #endif
程序2:hello.c 
#include <stdio.h> 
void hello(const char *name) { 
		printf("Hello %s!\n", name); 
}
程序3:main.c 
#include "hello.h" 
 int main(){ 
	 hello("everyone"); 
	 return 0; 
 }
注意:用gcc –o 编译hello.c,gcc将报错。这个道理非常简单,hello.c是一个没有main函数的.c程序,因此不够成一个完整的程序。无论静态库,还是动态库,都是由.o文件创建的。因此,我们必须将源程序hello.c通过gcc先编译成.o文件。
这个时候我们有三种思路:
1) 通过编译多个源文件,直接将目标代码合成一个.o文件。
2) 通过创建静态链接库libmyhello.a,使得main函数调用hello函数时可调用静态链接库。
3) 通过创建动态链接库libmyhello.so,使得main函数调用hello函数时可调用动态链接库。
思路一:编译多个源文件
	只生成目标文件,不进行链接。即生成hello.o,main.o。
命令:$gcc –c hello.c main.c
用命令查看生成的文件(截屏给出查看结果):

创建 hello.h 文件:
在命令行中输入以下命令,创建并编辑 hello.h 文件:
nano hello.h
在编辑器中,将以下内容粘贴到 hello.h 文件中:
#ifndef HELLO_H
#define HELLO_H
void hello(const char *name);
#endif
按下 Ctrl + X,然后按 Y 保存并退出编辑器。

创建 hello.c 文件:
在命令行中输入以下命令,创建并编辑 hello.c 文件:
nano hello.c
在编辑器中,将以下内容粘贴到 hello.c 文件中:
#include <stdio.h>
void hello(const char *name) {
	printf("Hello %s!\n", name);
}
按下 Ctrl + X,然后按 Y 保存并退出编辑器。

创建 main.c 文件:
在命令行中输入以下命令,创建并编辑 main.c 文件:
nano main.c
在编辑器中,将以下内容粘贴到 main.c 文件中:
#include "hello.h"
int main() {
	hello("everyone");
	return 0;
}
按下 Ctrl + X,然后按 Y 保存并退出编辑器。

现在,已经成功创建了 hello.h、hello.c 和 main.c 三个文件。