Linux工程下所有C代码编译Makefile模板

如何快速的开发简易C程序,首先需要一个Makefile模板。

简易Makefile特性

这个模板需要具备以下特性:

==》快速编译所有C代码

==》能够快速打包源代码

==》语言简洁易懂,便于后续的模块化操作

这里提供一个这样的模板供大家参考使用,如有改进方法和建议,也请不吝赐教,以便完善,谢谢!

简易Makefile模板

废话不说,使用《Linux下C/C++版本发布自动脚本》集成DEMO的三个文件进行简单的示例(version.c/main.c/version.h)。

Makefile模板文件,编译输出hello可执行程序。

#Makefile for program hello
#

program := hello

sources := $(wildcard *.c)
headers := $(wildcard *.h)

objects := $(sources:.c=.o)
deps    := $(sources:.c=.d)

CC      := gcc
SHARED  := -shared
FPIC    := -fPIC
CFLAGS  :=
LDFLAGS := 

RM      := rm -f
TAR     := tar
GZIP    := gzip

me      := Makefile

all:    $(program)

hello:  $(objects)
		$(CC) -o [email protected] $(CFLAGS) $(objects) $(LDFLAGS) $(LDLIBS)

dist:
		pkg=`pwd`; tar cvf - $(me) $(sources) $(headers)                 | $(GZIP) -c > `basename $${pkg}`.tar.gz
clean:
		$(RM) $(objects)
		$(RM) $(deps)
		$(RM) $(program)

.SUFFIXES: .d
.c.d:
		$(CC) $(CPPFLAGS) -MM -MF [email protected] $<

-include $(deps)

简易Makefile模板下载

打包资料下载

工程测试结果

测试结果如下所示:

# ls
main.c  Makefile  version.c  version.h
# make
gcc  -MM -MF version.d version.c
gcc  -MM -MF main.d main.c
gcc    -c -o main.o main.c
gcc    -c -o version.o version.c
gcc -o hello  main.o version.o
# ls
hello  main.c  main.d  main.o  Makefile  version.c  version.d  version.h  version.o
# ./hello
get_version: DEBUG_2016-05-10_18:41:24_v1_2_271
get_ver_author: lida
get_ver_author_contact: [email protected]
get_ver_flag: DEBUG
get_build_date: 2016-05-10
get_build_time: 18:41:24
get_ver_major: 1
get_ver_minor: 2
get_ver_rev: 271
# make dist
pkg=`pwd`; tar cvf - Makefile main.c version.c version.h                 | gzip -c > `basename ${pkg}`.tar.gz
Makefile
main.c
version.c
version.h
# make clean
$ ls
main.c  Makefile  version.c  version.h  version.tar.gz

参考资料

【1】简单开发过程介绍(C语言)

【2】Linux应用程序之Helloworld入门

【3】Linux下C/C++版本发布自动脚本

【4】Linux下常用打包、解压方法(tar、bz2、rar)详解

时间: 2024-10-13 04:00:53

Linux工程下所有C代码编译Makefile模板的相关文章

Linux 环境下 gcc 链接库 编译、链接(概览) 以及 自动化工具Makefile的编写

个人博客首页(点击查看详情) -- https://blog.51cto.com/11495268 1.简介    程序编译一般需要经预处理.编译.汇编和链接,在实际应用中,有些公共代码需要反复使用,就把这些代码编译成为 "库" 文件,本文 主要 描述 Linux 平台下 库文件的 创建 和 链接 相关操作(既然都看 这么底层的内容了,相信 也有一定的基础,所以本文 对相关命令 也不会进行详细解释)    备注:    linux平台下,静态链接库是以 .a 的后缀文件,动态链接库是以

makefile编写---.c .cpp 混合编译makefile 模板

# c.cpp混合编译的makefile模板 # # BIN = client_system BASE_INSTALL_DIR := /opt/arm-2009q1 BUILD_TOOL_DIR := $(BASE_INSTALL_DIR) BUILD_TOOL_PREFIX := $(BUILD_TOOL_DIR)/bin/arm-none-linux-gnueabi- CC = $(BUILD_TOOL_PREFIX)gccCPP = $(BUILD_TOOL_PREFIX)g++ INCS

linux 环境下编写的代码在windows平台编译时大面积报错

跨平台工程往往因为换行符的不一样导致编译时出现一些莫名其妙的错误, 可以通过file查看文件格式,通过unix2dos.unix2mac.dos2unix.mac2unix等命令将格式转换下,windows平台也可以设置git config --global core.autocrlf true(如果只是windows项目则设置成false以把回车符也提交),linux和mac平台则设置git config --global core.autocrlf input 原文地址:https://ww

在linux环境下利用mmm命令编译android项目错误记录

此篇文章建立在之前的三篇文章的基础之上(本次内容主要参考老罗的<android源码情景分析一书>): 源码编译 内核编译 adb连接模拟器 ------------------------------------------------------------------------------------ 之后,在android源码环境中编写了一个简单的android程序HelloAndroid. 文件结构如下: ~/android/packages/experimental/HelloAn

linux环境下tesseract4.1的编译安装

由于公司新的产品需要深度集成tesseract,所以需要在linux下和windows下源码编译安装tesseract,tesseract当前最新稳定版本是4.1.0,所以就从这个版本入手,编译的过程中碰到了不少困难,踩到了不少坑,所以特意分享出来,避免各位朋友再走弯路~~. 1.查看centos版本#cat /etc/redhat-releaseCentOS release 6.5 (Final) 2.查看gcc和g++版本#gcc --version#g++ --versiongcc至少应需

在linux环境下尝试使用gcc编译一个程序,并验证-E\-S\-c选项

首先,进入Linux平台: 2.双击Terminal,进入: 3.编入命令 vim test.c ,进入新建文件test.c中,并且自己编写一个简单的c语言程序: 4.分别输入命令: ESC   :  w   q   ! 这5个命令回到编译页面,如若想修改则可输入命令 vim test.c  进入,输入命令i或者A命令 5.输入命令gcc -S test.c  预处理 6.输入命令 gcc -c test.c     预编译处理完成 7.输入命令    ./test 8.程序运行截图:

Linux环境下c程序的编译和执行

1 单个文件的编译和执行创建main.c文件,内容如下: #include <stdio.h> #include <stdlib.h> int main(void){ printf("Hello world!\n"); return 0; }; 编译: gcc -o main main.o 执行: [email protected]:/ybg/python# ./main Input an integer: 10 sum=55 2 多个文件的编译和执行创建sum

【caffe】caffe在linux环境下的安装与编译

网上的caffe的安装教程繁杂而散乱,对初学者很不友好,尤其对该框架理解不深的童鞋.总的来说,caffe的安装不外乎几个固定的步骤,对每一步有了一定的理解,安装只是time-consuming的问题!关键是自己要理解每一步是做什么的,最起码要有思维惯性.对Ubuntu活Redhat等,都是大同小异. [一]安装相关依赖包 1.编译工具等,如gcc(对版本有要求),git.python-pip等: 2.编译依赖包,如cuda/cudnn/hdf5等,具体参考官网: ps:若有sudo权限,需要下载

模块编译Makefile模板

PWD := $(shell pwd) MOD_DIR ?= /lib/modules/`uname -r`/build obj-m += hello.o modules: make -C $(MOD_DIR) M=$(PWD) modules modules_install: make -C $(MOD_DIR) M=$(PWD) modules_install clean: rm -rf *.o *.ko *.cmd *.mod.* Module.symvers modules.order