请问makefile中数学库-lm是如何使用的?是加到make命令中还是加到makefile中?

请问makefile中数学库-lm是如何使用的?是加到make命令中还是加到makefile中?,第1张

加到makefile中

在你makefile执行编译工作那一句

一般是

$(CC) xxxxx

或者$(CXX)xxx

加一个-lm就可以

也可以在CC或CXX定义的地方加

比如CC=gcc -lm

听本尊细细道来:

CC=g++

// 指定编译器为g++编译器

CFLAGS= -ansi -O5 -Wall

//编译器编译时的编译参数,-ansi 是指按照ANSI C标准.-O5 是优化程度,-Wall 是开启警告

LDFLAGS= -ansi -lm -Wall

//编译器链接多个目标时的链接参数,-lm 就是动态链接math.h 这个函数库。其他同上

EXEC=community convert hierarchy

//生成的可执行文件

OBJ1= graph_binary.o community.o

//目标1 的.o 文件

OBJ2= graph.o

//目标2的.o文件

all: $(EXEC)

//Makefile的制作目标:就是EXEC里面的文件

community : $(OBJ1) main_community.o

//生成community 所依赖的的.o 文件, : 代表依赖关系

$(CC) -o $@ $^ $(LDFLAGS)

// -o 是生成文件的重命名, $@ 就是目标名字,即community.

//$^就是所有的依赖文件,即$(OBJ1)和main_community.o

//$(LDLAGS)就是参加链接的参数

//意思就是连接目标文件$(OBJ1) 和main_community.o 生成的文件命名为community

convert : $(OBJ2) main_convert.o

$(CC) -o $@ $^ $(LDFLAGS)

//这个同上, 最后生成了convert

hierarchy : main_hierarchy.o

$(CC) -o $@ $^ $(LDFLAGS)

//同上,生成了 hierarchy

##########################################

# Generic rules

##########################################

%.o: %.cpp %.h

//意思就是生成的 .o 文件依赖 .cpp 文件和 .h 文件

//%.o就是匹配.o结尾的文件

$(CC) -o $@ -c $<$(CFLAGS)

//-o 意思同上.

//$<是指所有依赖文件中的第一个文件

//-c 是只编译不连接的意思, 再加上$(CFLAGS)编译参数

%.o: %.cpp

$(CC) -o $@ -c $<$(CFLAGS)

//同上.

//看到现在明白了把, 这些 .o 文件从来哪里来的, 最后要生成什么.

clean:

rm -f *.o *~ $(EXEC)

// 这个非常简单了, 就是执行make clean 时候要删除的文件.

怎么样,说得够明白了吧.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7256103.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存