首页 > 系统相关 >linux平台makefile文件的编写基础篇

linux平台makefile文件的编写基础篇

时间:2023-02-06 17:36:49浏览次数:47  
标签:file2 file1 文件 makefile gcc helloworld linux 编写


目的:基本掌握了 make 的用法,能在Linux系统上编程。

环境:Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。

准备:准备三个文件:file1.c, file2.c, file2.h

file1.c:

#include <stdio.h>
#include "file2.h"
int main(){
printf("print file1 $$$$$$$$\n");
File2Print();
return 0;
}



file2.h:


#ifndef FILE2_H_
#define FILE2_H_
#ifdef __cplusplus
extern "C" {
#endif
void File2Print();
#ifdef __cplusplus
}
#endif
#endif



file2.c:


#include "file2.h"
void File2Print(){
printf("Print file2 $$$$$\n");
}



先来个例子:有这么个makefile文件。(文件和makefile在同一目录)


helloworld: file1.o file2.o
gcc file1.o file2.o -o helloworld
file1.o: file1.c file2.h
gcc -c file1.c -o file1.o
file2.o: file2.c file2.h
gcc -c file2.c -o file2.o

clean:
rm -rf *.o helloworld


一个makefile主要含有一系列的规则,如下:


A: B
(tab)<command>
(tab)<command>


每个命令行前都必须有tab符号。


上面的makefile文件目的就是要编译一个helloworld的可执行文件。让我们一句一句来解释:



helloworld : file1.o file2.o:helloworld依赖file1.o file2.o两个目标文件。



gcc File1.o File2.o -o helloworld:编译出helloworld可执行文件。-o表示你指定 的目标文件名。



file1.o : file1.c:file1.o依赖file1.c文件。



gcc -c file1.c -o file1.o:编译出file1.o文件。-c表示gcc 只把给它的文件编译成目标文件, 用源码文件的文件名命名但把其后缀由“.c”或“.cc”变成“.o”。在这句中,可以省略-o file1.o,编译器默认生成file1.o文件,这就是-c的作用。



file2.o : file2.c file2.h


gcc -c file2.c -o file2.o


这两句和上两句相同。




clean:


rm -rf *.o helloworld


当用户键入make clean命令时,会删除*.o 和helloworld文件。



如果要编译cpp文件,只要把gcc改成g++就行了。


写好makefile文件,在命令行中直接键入make命令,就会执行makefile中的内容了。


到这步我想你能编一个Helloworld程序了。


标签:file2,file1,文件,makefile,gcc,helloworld,linux,编写
From: https://blog.51cto.com/u_15955464/6039968

相关文章

  • 盘点Linux系统最常用的4个关机命令!
    在Linux系统中如果想要关机可以通过命令来完成,那么Linux系统中常用的关机命令有哪些?主要包括:shutdown、halt、reboot、init,接下来是详细的内容介绍。Linux系统中我......
  • 4款常用的Linux手机远程工具!
    作为一名专业的Linux运维工程师,当我们进行服务器维护时,通常都是采用远程连接的方式进行操作及控制;而在多数情况下,很多人都是通过电脑进行远程操作的,但某种情况下,可能身......
  • linux环境编程(3): 使用POSIX IPC完成进程间通信
    1.写在前面之前的文章总结了使用管道进行进程间通信的方法,除了pipe和fifo,Linux内核还为我们提供了其他更高级的IPC方式,包括共享内存,消息队列,信号量等,本篇文章会通过一个......
  • Linux 多进程程序调试实例(六)-- 共享内存
    共享内存介绍共享内存就是两个不相关的进程访问同一个逻辑内存,从而达到两个进程互相通信的效果。共享内存是两个正在运行的进程之间共享和传递数据最有快的一种通信方式......
  • linux 命令: -exec 的使用
    linux中的exec命令,-exec后面跟的是linux的command命令,exec命令以分号结束‘;’,该分号前面要放反斜杠转义。find.-namejquery.js-execcat{}\;{}花括号代表......
  • linux 中提取以指定字符开头的数据^和\<的区别
     001、^仅提取以首个字符开头的数据;而\<提取所有单词中以指定字符开头的数据[root@PC1test]#lsa.txt[root@PC1test]#cata.txt##测试数据a1......
  • 01linux查询io资源使用情况。
    1.执行top   2.执行第一个参数是间隔多少s,第二个参数是执行多少次vmstat 110  也可以执行vmstat1 每秒输出一次......
  • Redis笔记(2): Linux服务器安装Redis
    1.下载  访问官网地址:Redis官网下载地址进行下载.2.上传安装包到Linux服务器并解压上传文件到/usr/local/src目录下解压安装包tar-zxvfredis-7.0.8.tar.gz查......
  • 【☝️C站博客大神的标配の建议收藏☝️】Emoji符号大全,可直接复制使用,无需编写符号代码
    引子看到各个巨佬都用Emoji表情,于是也想搞搞。先百度了一波,说直接使用符号代码,然后markdown里就直接可以,但是符号代码感觉影响文档的编写体验,于是想能不能直接复制呢,这样既......
  • Linux
    LinuxLinux基础知识Linux、WindowsWindows:Windows是微软开发的操作系统,民用操作系统,可用于娱乐、影音、上网。Windows操作系统具有强大的日志记录系统和强大的桌面应用......