zoukankan      html  css  js  c++  java
  • makefile 嵌套

    目录结构:

    dynamic 和 static 两个目录实现加法功能, 分别生成动态库和静态库,   main.c 主文件链接加法功能,  终端命令执行:   make dynamic=1  则编译动态库进行链接 ,   make 静态库编译

    动态库的makefile内容:

    # CROSS_COMPILE := 
    # CC := $(CROSS_COMPILE)gcc
    # CPP := $(CROSS_COMPILE)g++
    
    TARGET := libadd.so
    OBJ := sub.o
    SRCS = $(wildcard *.c)
    
    all:
    	$(CC) -c -o $(OBJ) -fPIC $(SRCS)
    	$(CC) -shared -fPIC -o $(TARGET)  $(OBJ)
    
    
    .PHONY : clean
    clean:
    	rm $(OBJ) $(TARGET) -f
    

     静态库makefile内容:

    # CROSS_COMPILE := 
    # CC := $(CROSS_COMPILE)gcc
    # CPP := $(CROSS_COMPILE)g++
    # AR := $(CROSS_COMPILE)ar
    
    TARGET := libadd.a
    OBJ := sub.o
    SRCS = $(wildcard *.c)
    
    all:
    	$(CC) -c -o $(OBJ)  $(SRCS)
    	$(AR) -rcs -o $(TARGET)  $(OBJ)
    
    
    .PHONY : clean
    clean:
    	rm $(OBJ) $(TARGET) -f
    

      

    根目录的makefile内容:

    CROSS_COMPILE := 
    CC = $(CROSS_COMPILE)gcc
    AR = $(CROSS_COMPILE)AR
    CPP = $(CROSS_COMPILE)g++
    LD = $(CROSS_COMPILE)ld
    NM = $(CROSS_COMILE)nm
    
    STRIP = $(CROSS_COMPILE)strip
    OBJDUMP = $(CROSS_COMPILE)objdump
    OBJCOPY = $(CROSS_COMPILE)objcopy
    
    
    
    ifndef dynamic
    LIBPATH := static
    else
    LIBPATH := dynamic
    endif
    
    
    CFLAGS := -Wall -O2 -g 
    CFLAGS += -I $(shell pwd)/$(LIBPATH) 
    
    LDFLAGS := -lm -L$(LIBPATH) -ladd
    
    
    TOPDIR := $(shell pwd)
    
    SRCS = $(wildcard *.c)
    
    
    TARGET := main
    OBJ := main.o
    
    all:$(TARGET)
    # $(TARGET):    这种方式不会自动推导调用 %.o:%.c 这个内容
    $(TARGET):$(OBJ)
    	make -C $(LIBPATH)
    	$(CC) $(OBJ) $(CFLAGS) $(LDFLAGS) -o $(TARGET)
    #  这样放会出现找不到链接库的问题,源文件要放在链接库前面
    # $(CC)  $(CFLAGS) $(LDFLAGS) -o $(TARGET) $(SRCS)  
    
    %.o:%.c
    	$(CC) -c $(CFLAGS)  $^ -o $@
    
    
    
    # .PHONY是一个伪目标,可以防止在Makefile中定义的只执行命令的目标和工作目录下的实际文件出现名字冲突
    .PHONY : clean
    clean:
    	make -C $(LIBPATH) clean
    	rm $(OBJ) $(TARGET) -f
    

      

     源码下载路径: https://download.csdn.net/download/aba13579/10777167

    参考链接: https://blog.csdn.net/qq_21792169/article/details/50448639

  • 相关阅读:
    php文件下载原理
    spring源码@configuration&@bean
    解决java在idea运行正常,但是打成jar包后中文乱码问题
    IntelliJ IDEA查看堆内存和类继承关系
    jenkins无法展示报告
    解决windows(slave)导致linux(master)输出乱码
    UIRECODER安装记录
    vue项目前后端部署
    django orm
    django笔记
  • 原文地址:https://www.cnblogs.com/hzijone/p/9940935.html
Copyright © 2011-2022 走看看