本文是为了在vmware虚拟机上联系使用Ubuntu18.04系统编译多个C程序来熟悉在Linux系统下编写C程序的操作。并通过gcc和makefile两种编译方式来进行编译。
目录
(一)直接使用gcc编译C程序
(二)与windows平台编程对比
(三)使用makefile编译C程序
``
一、直接使用gcc编译C程序
1.C程序的编写
2、gcc编译过程
3、gcc的编译
步骤一:
命令:gcc -c sub1 .c(将sub1.c程序转化为目标文件sub1.o)
步骤二:
命令:gcc main.c sub1.o -o main(编译main.c文件为目标文件main.o,然后链接sub1.o目标文件生成main可执行文件)
步骤三:
命令:./main,即可以执行编译生成main文件
二、与windows平台编程对比
工具:Visual Studio Code
程序:与Ubuntu系统上一致
遇到的问题
无法多文件编译
因为我的文件夹下有一个main1c文件, sub1.h和sub1c文件。此时如果在
main1c文件下直接点击运行按钮会报错,因为sub1c并没有编译,因此会出现 main1c引用的sub1c中的函数没有定义的问题。
collectz.e or: ld retu 1 exit status
解决方法(默认已安装CodeRunner)
方法一:直接将sub1.h改为sub1c,但是这种做法相当于把两个程序合并为一个,不提倡这样做,因为多次 include可能合出问题。
方法二 Runner支持编译
该文件夹下全部c文件,首先打开文件->首选项->Settings。然后在设置页面搜索CodeRunner,找到Code,点击在settingsjson中编辑,打开 settingsjson文件如图,找到
executorMap设置项,在其中c程序对应的一行,修改其中的gcc
Sfilename为gcc*c(最好将原来的注释掉然后重新复制一份再修改)。
修改保存之后,再点击CodeRunner运行按钮,可以直接编译运行了。
·运行结果
三、使用makefile编译C程序
1、编写makefile 文件
2、使用makefile编译C程序
步骤一:
在源目录下执行命令make,即可得到可执行文件main
步骤二:
在源目录文件下执行命令clean make,即可删除编译过程产生的.o文件点击在settingsjson中编辑