在Makefile中

通常所谓

CFLAGS 存储的是头文件 -I./include

LIBRARY存储的是库文件 -L./lib

LDFLAGS存储的是库文件 选用哪一个库文件看你自己的喜好

在Makefile 中看调试信息可以使用

$(info $(TARGETS))

第一版:

LOCAL_LIBRARY +=  -L./lib -lpal
#LIBRARY += -Wl,-rpath . -lpthread -ldl
LOCAL_LDFLAGS += -lopus -lpthread -ldl
LOCAL_CFLAGS += -I./include
SRCS = $(wildcard *.c)
OBJS = $(patsubst %.c, %.o, $(SRCS))
#TARGETS = $(SRCS:%.c=%)
TARGETS = pal_sample opus_test libwebsockets_test cJson CFLAGS += $(LOCAL_CFLAGS)
LDFLAGS += $(LOCAL_LIBRARY) $(LOCAL_LDFLAGS) $(info $(OBJS))
$(info $(TARGETS)) #CC:=arm-openwrt-linux-gcc
#all : $(TARGETS)
all: opus_test
#$(TARGETS): %: %.o
# $(CC) -o $@ $< $(LOCAL_LDFLAGS) $(LIBRARY)
#pal_sample:pal_sample.o platform_linux.o
# $(CC) -o $@ platform_linux.o $(LIBRARY) pal_sample.o $(LOCAL_LDFLAGS) opus_test:opus_test.o platform_linux.o
$(CC) -o $@ platform_linux.o opus_test.o $(LDFLAGS)
opus_test.o:opus_test.c
$(CC) -o $@ $(CFLAGS) -c opus_test.c
#$(OBJS) : %.o: %.c
# $(CC) -c $(CFLAGS) $< -o $@ $(LOCAL_LDFLAGS) $(LIBRARY)
platform_linux.o:platform_linux.c
$(CC) -o $@ -c $(CFLAGS) platform_linux.c
clean :
@rm -rf $(TARGETS) $(OBJS) #.SUFFIXES:
.PHONY : all clean

第二版

LOCAL_LIBRARY +=  -L./lib -lpal
LOCAL_LDFLAGS += -lm -lopus -lwebsockets -lpthread -ldl
LOCAL_CFLAGS += -I./include TARGETS1 = air_opus
SRCS1 = opus_test.c platform_linux.c cJSON.c
OBJS1 = $(patsubst %.c, %.o, $(SRCS1)) CFLAGS += $(LOCAL_CFLAGS)
LDFLAGS += $(LOCAL_LIBRARY) $(LOCAL_LDFLAGS) $(info $(OBJS))
$(info $(TARGETS)) all: $(TARGETS1) $(TARGETS1):$(OBJS1)
$(CC) -o $@ $^ $(LDFLAGS) $(CFLAGS) $(OBJS1): %.o:%.c
$(CC) -c $< -o $@ $(CFLAGS) clean :
@rm -rf $(TARGETS1) $(OBJS1) #.SUFFIXES:
.PHONY : all clean

为什么改成这一版本呢??

首先这样可以

\(^:所有的 .o
\)<:所有的依赖项目 .c 第一个的依赖,所以特别适合用来编译 .o文件

注意:

$(LDFLAGS) $(CFLAGS) 加入的位置,编译 .o 文件没必要加入库的路径.

编译 可执行文件的时候就比较适合了.

someone does not honour COPTS correctly, passed 0 times

这个表示你的编译命名覆盖了官方的命令.

比如使用了 := 之类的.

TIPS

SRCS1 = $(wildcard $(SRC)/*.cc)

可以使用这个方式将一个目录下的所有.cc参与进来

通用Makefile ---- openwrt的更多相关文章

  1. 一个简单的通用Makefile实现

    一个简单的通用Makefile实现   Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新ma ...

  2. 通用Makefile

    本文推荐了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile. 在使用 Makefile 之前,只需对它进行一些简单的设置即可:而且一经设置,即使以后对源程序文件有所增 ...

  3. Makefile之写demo时的通用Makefile写法

    Makefile之写demo时的通用Makefile写法[日期:2013-05-22] 来源:CSDN  作者:gqb666 [字体:大 中 小] 前面的一篇文章Makefile之大型工程项目子目录M ...

  4. linux下通用Makefile写法

    linux编译多个源文件的程序比较麻烦,这下就需要通用的Makefile了,编译的时候执行一下make命令就OK,下面介绍通用makfile的写法. 假设现在有以下源文件:file1.h file1. ...

  5. 一个通用Makefile的编写

    作者:杨老师,华清远见嵌入式学院讲师. 我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文件.如果我们用gcc去一个一个编译每一个源文件的 ...

  6. C/C++通用Makefile

    最近的项目又回到了Linux上运行,这就需要在Linux下编译项目,写Makefile针对习惯了Windows的程序员来说是一件痛苦的事,如果有一个通用的Makefile该多好啊,本着这样的目的,我再 ...

  7. 【linux】-Makefile简要知识+一个通用Makefile

    目录 Makefile Makefile规则与示例 为什么需要Makefile Makefile样式 先介绍Makefile的两个函数 完善Makefile 通用Makefile的使用 通用的Make ...

  8. 一个通用Makefile详解

    我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文 件. 如果我们用gcc去一个一个编译每一个源文件的话,效率会低很多,但是如果我们可以写 ...

  9. 4通用Makefile编写

    a.c #include<stdio.h> #include "a.h" int main() { printf("hello world\n"); ...

  10. Linux下C++的通用Makefile与解析

    本文给出万能Makefile的具体实现,以及对其中的关键点进行解析.所谓C++万能Makefile,即可编译链接所有的C++程序,而只需作很少的修改. 号称万能Makefile,一统江湖.我对原版的M ...

随机推荐

  1. mysql 的group by 满足的规则要求

    GROUP BY满足的规则: 所有select 字段,除了聚合函数中的字段,都必须出现在GROUP BY 中. 例如:SELECT name,age,max(salary) FROM t_employ ...

  2. 第十五届蓝桥杯javaA组 砍柴 (两种写法)详解

    参考资料 原题链接砍柴 - 蓝桥云课 (lanqiao.cn) 区间质数搜索--埃拉托斯特尼筛法和欧拉筛法-CSDN博客 思路 质数筛 + 二分 + 博弈 + 状态机(只因bushi) $$ 状态转移 ...

  3. Sentinel源码—1.使用演示和简介

    大纲 1.Sentinel流量治理框架简介 2.Sentinel源码编译及Demo演示 3.Dashboard功能介绍 4.流控规则使用演示 5.熔断规则使用演示 6.热点规则使用演示 7.授权规则使 ...

  4. 鸿蒙NEXT实战教程—实现音乐歌词同步滚动

    之前写过一个音乐播放器项目,今天再给它完善一下,加一个歌词同步滚动. 先看效果图:   要做歌词同步滚动,我们首先需要的文件资源就是音乐文件和与之匹配的歌词文件.现在歌词文件不太好找,没关系,我们可以 ...

  5. 如何医治一条慢SQL?

    前言 "苏工,订单列表又崩了!" 接到电话时,我对着监控大屏上999ms的SQL响应时间哭笑不得. 几年来,我发现一个定律:所有SQL问题都是在凌晨三点爆发! 今天抽丝剥茧,教你用 ...

  6. 鸿蒙NEXT实践(二):公共事件通信实践-智能节电案例

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  7. Predixy的docker化

    概述 当前已有一套redis cluster的集群,但是fs中的hiredis只能配置单实例redis. AI了一下方案,可以使用redis的proxy组件来实现从hiredis到redis clus ...

  8. ubuntu18.04安装网易云音乐1.2.1提示“加载失败,网络错误,可以在设置中发送反馈”

    https://music.163.com/#/download 这是网易云的官网,右上角有下载Linux的链接 听说会出现无法打开网易云的问题,请参考这篇https://blog.csdn.net/ ...

  9. 【2020.11.30提高组模拟】剪辣椒(chilli) 题解

    [2020.11.30提高组模拟]剪辣椒(chilli) 题解 题意简述 给你一棵树,删去两条边,使得形成的三棵新树的大小极差最小化.求最小极差. \(3\le n\le 200,000\). Sol ...

  10. Openmv简明使用教程

    Openmv简明使用教程 写在前面 本教程主要目的是指明学习资源在哪,可以怎么学,不教具体怎么使用,因为没有什么教程比官网上的教程更详细了,希望大家看完这篇文章后,能对如何学习使用Openmv有一个清 ...