Ubuntu系统下运行C程序

准备工作

vi sub1.c	# 创建sub1.c文件
vi main1.c	# 创建main1.c文件

编写 sub1.c

float x2x(int a, int b){
    
    
	return a + b;
}

编写 main1.c

#include<stdio.h>
#include"sub1.c"

int main(){
    
    
	int a = 2, b = 3;
	printf("%f\n",x2x(a, b));
	return 0;
}

直接使用 gcc 命令生成可执行文件

gcc -o main1 main.c		# 将输出文件放入main1中
./main1					# 运行main1

结果如下:

使用MakeFile方式进行编译链接

在你放置 C 程序的目录下创建 makefile 文件:

touch makefile	# 创建makefile文件

语法规则:

target: prerequisites	# target为需要生成的目标,prerequisites为依赖项
	command				# command为make需要执行的shell命令

注意:其中 command 前必须以tab键开始

编辑 makefile 文件:

#MakeFile
main1: main1.o sub1.o

main1.o main1.c sub1.h
	cc -c main1.c
	
sub1.o: sub1.c sub1.h
	cc -c sub1.c
	
clean:
	rm *.o main1

注意:在编辑 makefile 文件时,新添加了 sub1.h 头文件,不然运行 make 进行编译链接时会报如下错误

添加 sub1.h 头文件,内容如图:

修改 sub1.c 源文件,内容如图:

修改 main1.c 源文件,内容如图:

完成如上修改后,执行如下命令:

make	# 进行编译链接
./main1	# 运行main1
make clean	# 删除所有 .o 文件和 main1 文件

用命令行进行编译链接

gcc -c main1.c	# 编译 main1.c 生成 main1.o
gcc -c sub1.c	# 编译 sub1.c 生成 sub1.o
gcc -o main main1 mian1.o sub1.o	# 链接 main1.o 和 sub1.o 生成 main1 可执行文件
./main1			# 运行 main1

参数 -c 和 -o 的区别:

-c:只编译生成中间同名目标文件,不链接

  • gcc -c main1.c(编译生成 main.o 文件)

-o:指定输出文件名,该文件为可执行文件,不加 -o 会默认生成 a.out

  • gcc -o main1 main1.c (直接生成可执行文件 main1)

在Windows下使用VS2017编译main1.c并运行

  1. 创建一个空项目

  2. 分别创建 sub1.h 、sub1.c 、main1.c文件,代码内容和贴出的三张图片内容一样。

  3. 点击运行

    此时会报 “error C4996” 的错误,意思是 scanf 这个函数或者变量可能不安全。

    解决办法:在 main1.c 所有 include 头文件之前定义宏:#define _CRT_SECURE_NO_DEPRECATE

  4. 修改后,重新运行

猜你喜欢

转载自blog.csdn.net/xwmrqqq/article/details/108696783