永发信息网

LINUX下makefile文件的编写

答案:2  悬赏:80  手机版
解决时间 2021-02-22 07:34
  • 提问者网友:骑士
  • 2021-02-21 09:52
在一个demo目录下有三个目录:分别是test, include, lib
test目录下有三个目录,分别是include和source和project,在目录include下有三个文件,分别是a.h,b.h,c.h,在source目录下有三个文件,分别是a.c,b.c,c.c,project目录下放的是makefile文件
include目录下有多个头文件,分别是d.h,m.h, n.h,f.h
lib目录下有多个静态库,分别是:liberr.a,libarm.a
现在a.c包括a.h,b.h,d.h;b.c包括b.h,c.h,m.h,n.h;c.c包括a.h,b.h,c.h
现在要求写一个makefile文件,把.c文件编译成.o文件,并链接静态库,生成的目标文件和可执行文件放哪儿无所谓,跪求代码,在线等,谢谢!
最佳答案
  • 五星知识达人网友:末日狂欢
  • 2021-02-21 11:25
INC_PATH := -I./include/
LIB_PATH := -L./lib/
LIBS     := $(LIB_PATH) -lerr -larm
CC       := gcc
LD       := gcc
CFLAGS   := -O2 -Wall $(INC_PATH)
SRC_PATH := ./source
SOURCE   := $(SRC_PATH)/a.c\
            $(SRC_PATH)/b.c\
            $(SRC_PATH)/c.c
TARGET   := target
OBJS     := a.o b.o c.o
$(TARGET): $(OBJS)
    $(LD) -O2 -o $(TARGET) $(OBJS) $(LIBS)
a.o : $(SRC_PATH)/a.c
    $(CC) $(CFLAGS) -c -o $@ $<
b.o : $(SRC_PATH)/b.c
    $(CC) $(CFLAGS) -c -o $@ $<
c.o : $(SRC_PATH)/c.c
    $(CC) $(CFLAGS) -c -o $@ $<
.PHONY: clean
clean:
    -rm -f $(OBJS)
全部回答
  • 1楼网友:野味小生
  • 2021-02-21 12:11
all: myapp myapp: a.o b.o c.o gcc -o myapp a.o b.o c.o -L../../lib -lerr -larm # -L指明库的路径 a.o: ../source/a.c ../include/a.h ../include/b.h ../../include/d.h gcc -c ../source/a.c -I../include -I../../include # 大写的i,指明头文件的路径 b.o,c.o的依赖关系与a.o的写法类似。 这样应该可以生成相应的可执行文件
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯