摘要:在Ubuntu下进行gcc编译以及Makefile文件建立,并与Windows环境下进行对比学习。
相关知识:Ubuntu,gcc,vim,Makefile,Windows环境下的vc++
简要概括:请大家在仿照此实例之前在Ubuntu中下载或更新gcc,vim,Makefile,如对此有疑问请移步其他论坛进行相关学习。
先进行大家比较熟悉的Windows环境下的编译Hello,World!程序,大家先来练练手。 打开vc++6.0 输入以下代码。
#include //预处理
int main() //main主函数
{
printf("Hello World!\n"); //打印Hello,World!至屏幕(\n为换行符)
return 0; //返回值0
}
这里我将用vc++工程进行编写头文件以及调用。(如有对vc++建立工程有疑问的请点击此链接https://jingyan.baidu.com/article/8ebacdf0cbdb5749f75cd54a.html–该链接为百度经验)
linuxx.h库函数代码如下
#ifndef linuxx //声明头文件
#define linuxx //宏定义
#include //预处理
#include //预处理
float sumfloat(float,float); //声明sumfloat函数
#endif //结束
这里这样编写是为了避免重复定义。
linuxx.c代码如下
#include"linuxx.h" //使用" "的意思是在此目录下搜索头文件
float sumfloat(float a,float b) //定义sumfloat函数
{
a+=b; //a=a+b
return a; //返回a的值
}
main.c的代码如下
#include"linuxx.h" //头文件为linuxx.h
void main(){
//主函数
float a=12,b=11; //定义两个浮点型a,b并进行赋值
float x;
x=sumfloat(a,b); //调用sumfloat函数并将值返回给x
printf("%f\n",x); //打印x的值至屏幕
}
在进入Ubuntu之后,在命令行界面进行创建test文件,之后进入test文件(由于是测试学习,所以请大家尽量建立指定文件夹进行保存自己的代码,这样方便之后的学习与清理文件)并输入:
vim Hello.c
Hello.c代码如下:
#include //预处理
int main() //main主函数
{
printf("Hello World!\n"); //打印Hello,World!至屏幕(\n为换行符)
return 0; //返回值0
}
输入:
gcc Hello.c
生成a.out文件,之后输入:
./a.out
运行结果如下:
linux.h代码如下
#ifndef linux //声明头文件
#define linux //宏定义
#include //预处理
#include //预处理
float sumfloat(float,float); //声明sumfloat函数
#endif
linux.c代码如下:
#include"linux.h" //使用" "的意思是在此目录下搜索头文件
float sumfloat(float a,float b) //定义sumfloat函数
{
a+=b; //a=a+b
return a; //返回a的值
}
main.c代码如下:
#include"linux.h" //头文件为linuxx.h
void main(){
//主函数
float a=12,b=11; //定义两个浮点型a,b并进行赋值
float x;
x=sumfloat(a,b); //调用sumfloat函数并将值返回给x
printf("%f\n",x); //打印x的值至屏幕
}
代码输入之后进行gcc编译,输入
gcc -c linux.c
gcc -c即是将linux.c 编译成二进制目标代码,文件后缀为.o
在生成linux.o文件之后,输入:
gcc linux.o main.c -o sumfloat
gcc -o 是将linux.o与main.c链接成最终可执行文件sumfloat.exe,
之后输入:
./sumfloat
得出结果下图所示:
但进行最后编译的时候出现警告,网上搜出的原因是未在头文件以及主函数中声明调用函数,具体警告内容如下:
目前由于时间问题没有解决,望大佬告知。
创建makefile文件,输入:
vim makefile
makefile代码如下
sumfloat:main.c
gcc linux,o mainc.c -o sumfloat
之后输入:
make
同样有以上编译问题
最后输入:
./sumfloat
得出结果为:
此次通过对比学习,使我更加深刻的认识vc与Ubuntu下的c语言编译以及初步上手了makefile的编程,同时也掌握了一些编程知识。其中遇到很多问题,谢谢网上好心博客主以及我的同学们,如果以上博客有侵,则请联系我。谢谢各位阅读并指出错误。