通用Makefile ---- openwrt
在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的更多相关文章
- 一个简单的通用Makefile实现
一个简单的通用Makefile实现 Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新ma ...
- 通用Makefile
本文推荐了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile. 在使用 Makefile 之前,只需对它进行一些简单的设置即可:而且一经设置,即使以后对源程序文件有所增 ...
- Makefile之写demo时的通用Makefile写法
Makefile之写demo时的通用Makefile写法[日期:2013-05-22] 来源:CSDN 作者:gqb666 [字体:大 中 小] 前面的一篇文章Makefile之大型工程项目子目录M ...
- linux下通用Makefile写法
linux编译多个源文件的程序比较麻烦,这下就需要通用的Makefile了,编译的时候执行一下make命令就OK,下面介绍通用makfile的写法. 假设现在有以下源文件:file1.h file1. ...
- 一个通用Makefile的编写
作者:杨老师,华清远见嵌入式学院讲师. 我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文件.如果我们用gcc去一个一个编译每一个源文件的 ...
- C/C++通用Makefile
最近的项目又回到了Linux上运行,这就需要在Linux下编译项目,写Makefile针对习惯了Windows的程序员来说是一件痛苦的事,如果有一个通用的Makefile该多好啊,本着这样的目的,我再 ...
- 【linux】-Makefile简要知识+一个通用Makefile
目录 Makefile Makefile规则与示例 为什么需要Makefile Makefile样式 先介绍Makefile的两个函数 完善Makefile 通用Makefile的使用 通用的Make ...
- 一个通用Makefile详解
我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文 件. 如果我们用gcc去一个一个编译每一个源文件的话,效率会低很多,但是如果我们可以写 ...
- 4通用Makefile编写
a.c #include<stdio.h> #include "a.h" int main() { printf("hello world\n"); ...
- Linux下C++的通用Makefile与解析
本文给出万能Makefile的具体实现,以及对其中的关键点进行解析.所谓C++万能Makefile,即可编译链接所有的C++程序,而只需作很少的修改. 号称万能Makefile,一统江湖.我对原版的M ...
随机推荐
- mysql 的group by 满足的规则要求
GROUP BY满足的规则: 所有select 字段,除了聚合函数中的字段,都必须出现在GROUP BY 中. 例如:SELECT name,age,max(salary) FROM t_employ ...
- 第十五届蓝桥杯javaA组 砍柴 (两种写法)详解
参考资料 原题链接砍柴 - 蓝桥云课 (lanqiao.cn) 区间质数搜索--埃拉托斯特尼筛法和欧拉筛法-CSDN博客 思路 质数筛 + 二分 + 博弈 + 状态机(只因bushi) $$ 状态转移 ...
- Sentinel源码—1.使用演示和简介
大纲 1.Sentinel流量治理框架简介 2.Sentinel源码编译及Demo演示 3.Dashboard功能介绍 4.流控规则使用演示 5.熔断规则使用演示 6.热点规则使用演示 7.授权规则使 ...
- 鸿蒙NEXT实战教程—实现音乐歌词同步滚动
之前写过一个音乐播放器项目,今天再给它完善一下,加一个歌词同步滚动. 先看效果图: 要做歌词同步滚动,我们首先需要的文件资源就是音乐文件和与之匹配的歌词文件.现在歌词文件不太好找,没关系,我们可以 ...
- 如何医治一条慢SQL?
前言 "苏工,订单列表又崩了!" 接到电话时,我对着监控大屏上999ms的SQL响应时间哭笑不得. 几年来,我发现一个定律:所有SQL问题都是在凌晨三点爆发! 今天抽丝剥茧,教你用 ...
- 鸿蒙NEXT实践(二):公共事件通信实践-智能节电案例
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- Predixy的docker化
概述 当前已有一套redis cluster的集群,但是fs中的hiredis只能配置单实例redis. AI了一下方案,可以使用redis的proxy组件来实现从hiredis到redis clus ...
- ubuntu18.04安装网易云音乐1.2.1提示“加载失败,网络错误,可以在设置中发送反馈”
https://music.163.com/#/download 这是网易云的官网,右上角有下载Linux的链接 听说会出现无法打开网易云的问题,请参考这篇https://blog.csdn.net/ ...
- 【2020.11.30提高组模拟】剪辣椒(chilli) 题解
[2020.11.30提高组模拟]剪辣椒(chilli) 题解 题意简述 给你一棵树,删去两条边,使得形成的三棵新树的大小极差最小化.求最小极差. \(3\le n\le 200,000\). Sol ...
- Openmv简明使用教程
Openmv简明使用教程 写在前面 本教程主要目的是指明学习资源在哪,可以怎么学,不教具体怎么使用,因为没有什么教程比官网上的教程更详细了,希望大家看完这篇文章后,能对如何学习使用Openmv有一个清 ...