makefile 示例1

# 设置编译器
CC = g++

# -fPIC 作用于编译阶段,告诉编译器产生与位置无关代码
# -D宏定义,相当于C中的全局#define,可以通过宏定义来控制源程序的编译,例如:
# #ifdef _FILELINE
# printf("Hello Yu Qiang, How are you?\n");
# #else
# printf("Sorry to lost you. \n");
# #endif
# 程序最终调用输出是: Hello Yu Qiang, How are you?
CFLAG = -g -fPIC -D_FILELINE

# mysql的头文件
MYSQLINC = /usr/include/mysql

INC = -I -Iinclude -I$(MYSQLINC)

# mysql库目录
MYSQLLIB = -L /usr/lib64/mysql -l mysqlclient -lz -lm

# 服务器目标
SERVEROBJS = src/file1.o src/file2.o src/file3.o

# 客户端目标
CLIENTOBJS = src/f1.o src/f2.o

# bin目录
BINDIR = bin

# checkbin 检查是否存在bin目录
# 在bin目录下生成 Server 与 Client
all: checkbin $(BINDIR)/Server $(BINDIR)/Client

# 生成 Server
# $^ 所有.o文件
# [email protected] 所有.c文件
$(BINDIR)/Server: $(SERVEROBJS)
$(CC) -g $(MYSLQLIB) $^ -o [email protected]

# 生成Client
$(BINDIR)/Clietn: $(CLIENTOBJS)
$(CC) -g $(MYSQLLIB) $^ -o [email protected]

# .SUFFIXES 连接后缀,把.o .cpp .c .cpp.o 这些文件连接起来编译。当前makefile内支持文件后缀的类型列表。
.SUFFIXES: .c .o .cpp
.cpp.o:
$(CC) $(CFLAG) $(INC) -o [email protected] -c $<

# .PHONY 伪目标
.PHONY: checkbin
checkbin:
test -d "${BINDIR}" || mkdir $(BINDIR)

.PHONY: clean
clean:
-rm -f *.o
-rm -f $(BINDIR)/Server

时间: 2024-11-08 06:57:34

makefile 示例1的相关文章

makefile示例

#定义编译选项CXX = g++ #设置“CXXFLAGS”环境变量CXXFLAGS = -g -Wall -O0 -std=c++0x #定义头文件目录,链接库目录,链接文件INCLUDE_PATH = ../frame/3rdInc/eluna/ ../frame/3rdInc/glog ../frame/3rdInc/google ../frame/3rdInc/json / ../frame/3rdInc/uuid LIB_PATH = ../frame/3rdLibs32/ ../fr

多目录工程的makefile示例

本文来源于:http://www.360doc.com/content/12/0403/08/1317564_200410720.shtml转载请注明出处 本文代码虽简单,但涉及比较复杂的各种调用关系,欲研究者需有耐心及清醒头脑. 切切!背景交待: 1.正在移植U-Boot,并对其源代码进行了一些分析,感觉它的Makefile十分强劲: 2.以前写的Makefile模板不合适多层目录: 3.研究一下多个库之间相互调用的问题. 平台及测试环境介绍: 1.fc9系统,i386平台,gcc版本4.3.

一个简单的makefile示例

下面的程序从 Linux 程序设计第四版 引用 文件目录 2.c #include "a.h"#include "b.h"void function_two(){} 3.c #include "b.h"#include "c.h"void function_three(){} main.c #include<stdio.h>#include "a.h"extern void function_t

gcc链接g++编译生成的静态库和动态库的makefile示例

使用c++开发程序或者库时,将库提供给其他人使用. 然而使用者是使用c开发的程序,链接g++编译生成的库时,于链接gcc生成的库,有所不同. 首先是静态库,以链接g++编译生成的libmylib.a为例子 mylib依赖于pthread,rt,math库,链接时必须放在mylib之后. 同时-Wl,--no-as-needed -ldl添加在末尾是必须的. arm和x86有些不同,就是arm的gcc不会自动链接数学库math,需要手动添加链接. 1 CC=arm-linux-gnueabihf-

【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11) 开发环境 : -- 操作系统 : Vmware11 + RedHat6.3 企业版 + Win8.1; -- 硬件 : OK-6410-A 开发

Oracle Proc开发之Makefile的编写模板

Oracle的数据库开发中需要用到Proc,Proc就是嵌入式C 本文主要介绍的是Oracle数据库开发,Linux下Proc的Makefile示例: 1 .SUFFIXES: .c .o 2 3 CC=gcc 4 PROC=proc 5 6 PROCSRCS=oracle.pc 7 SRCS=$(PROCSRCS:.pc=.c) 8 OBJS=$(SRCS:.c=.o) 9 10 ORACLE_HOME=/opt/oracle/product/11.2.0 11 ORAFLAGS1=/usr/

Makefile学习(三)[第二版]

make常用内嵌函数 1.函数调用 $(function arguments) #$引用的结果就是函数生成的结果 2.Makefile下常用的函数 1)$(wildcard PATTERN) #匹配当前目录下的文件 例如:src=$(wildcard *.c) #匹配当前目录下所有的.c文件 2)$(patsubst PATTERN,REPLACEMENT,TEXT) #模式替换函数 例如:$(patsubst %.c,%.o,$src) #等价于$(src:%.c=%.o)[常用] 3)she

Makefile学习(三)

 make常用内嵌函数 1.函数调用 $(function arguments) #$引用的结果就是函数生成的结果 2.Makefile下常用的函数 1)$(wildcard PATTERN) #匹配当前目录下的文件 例如:src=$(wildcard *.c) #匹配当前目录下所有的.c文件 2)$(patsubst PATTERN,REPLACEMENT,TEXT) #模式替换函数 例如:$(patsubst %.c,%.o,$src) #等价于$(src:%.c=%.o)[常用] 3)

make 和 makefile(一)

从今天开始,我们来学习 makefile 了.那么什么是 make 呢?为什么需要 make 呢?在我们之前学习的 C 语言以及 C++ 语言中,我们在编译的时候只需要 gcc 或者 g++ 命令就可以完成源码的编译了.但是在嵌入式中一些大型的项目中,如内核的编译,动辄上万个源文件,我们还可能去一行一行的敲 gcc 命令吗?肯定不会了,这时我们便需要一个工具来进行代替了,此时便需要 makefile 了. 本系列博客内容是根据狄泰软件学院的<门徒计划>中的 makefile 相关内容总结而来,