嵌入式linux C++通用makefile模板

编译生成spdlog_app可执行程序

#Makefile
# 编译器
#COMPLITE=arm-none-linux-gnueabi-
#COMPLITE=/root/share/nuvoton_cross/arm_linux_4.8/bin/arm-nuvoton-linux-uclibceabi-
#/root/share/nuvoton_cross/host/usr/bin/
COMPLITE=arm-nuvoton-linux-gnueabi-
CC=$(COMPLITE)gcc
CXX=$(COMPLITE)g++
LD=$(COMPLITE)ld# 编译选项
CFLAGS = -Wall# 目标文件
TARGET = spdlog_app
OBJ_DIR = build# 源文件
# 当前目录下的.cpp
#SRCS = $(wildcard *.cpp)
#其他目录下的.cpp
SRCS += $(wildcard src/*.cpp)SRCS_C= $(wildcard src/*.c)
CFLAGS=-I./
CPPFLAGS=-I./
LDFLAGS=-L./LIBS=-lpthread -levent -lrt
#LIBS=
CFLAGS += -Wall
CPPFLAGS += -W -Wall -std=c++11 -Wno-psabi -lcCFLAGS += -I ./include
CPPFLAGS += -I ./include
#-Wall -fPIC -shared# 头文件
#CFLAGS += -Imodule1/inc
#CFLAGS += -Imodule2/inc
#CFLAGS += -Ipath/to/include2# LIB
#CFLAGS += -Lpath/to/lib1
#CFLAGS += -Lpath/to/lib2#添加宏定义
#CFLAGS += -DANDROID_OS# 对象文件和中间文件目录
OBJS = $(SRCS:%.cpp=$(OBJ_DIR)/%.o)
OBJS += $(SRCS_C:%.c=$(OBJ_DIR)/%.o)
# 默认构建目标
all: $(TARGET)# 生成可执行文件 
$(TARGET): $(OBJS)$(CXX) $(LDFLAGS) $(LIBS) -o $@ $^# 生成根目录下的目标文件
$(OBJ_DIR)/%.o: %.cpp | $(OBJ_DIR)
#创建文件夹很关键,不然会fail@mkdir -p $(dir $@)$(CXX) $(CPPFLAGS) -c $< -o $@# 生成根目录下的目标文件
$(OBJ_DIR)/%.o: %.c | $(OBJ_DIR)
#创建文件夹很关键,不然会fail@mkdir -p $(dir $@)$(CC) $(CFLAGS) -c $< -o $@# 创建中间文件目录
$(OBJ_DIR):mkdir -p $(OBJ_DIR)clean:@echo "clean:"rm -rf $(OBJ_DIR)rm -rf $(TARGET)@echo "clean ok"

设置交叉编译工具链环境变量

root@ubuntu:~# source my_toolchain.sh 
root@ubuntu:~# cat my_toolchain.sh 
export PATH=$PATH:/root/share/nuvoton_cross/host/usr/bin
export PKG_CONFIG_LIBDIR=/root/share/nuvoton_cross/host/usr/lib/pkgconfig:/root/share/nuvoton_cross/host/usr/share/pkgconfig:$PKG_CONFIG_LIBDIR
export PKG_CONFIG_SYSROOT_DIR=/root/share/nuvoton_cross/host/usr/arm-nuvoton-linux-gnueabi/sysroot:$PKG_CONFIG_SYSROOT_DIRroot@ubuntu:~# 

源码目录如下:

root@ubuntu:~/share/gateway/spdlog_wrap# tree
.
├── build
│   └── src
│       ├── spdlogWrap.o
│       └── test_main.o
├── include
│   ├── spdlog
│   │   ├── async.h
│   │   ├── async_logger.h
│   │   ├── common.h
│   │   ├── details
│   │   │   ├── async_logger_impl.h
│   │   │   ├── circular_q.h
│   │   │   ├── console_globals.h
│   │   │   ├── file_helper.h
│   │   │   ├── fmt_helper.h
│   │   │   ├── logger_impl.h
│   │   │   ├── log_msg.h
│   │   │   ├── mpmc_blocking_q.h
│   │   │   ├── null_mutex.h
│   │   │   ├── os.h
│   │   │   ├── pattern_formatter.h
│   │   │   ├── periodic_worker.h
│   │   │   ├── registry.h
│   │   │   └── thread_pool.h
│   │   ├── fmt
│   │   │   ├── bin_to_hex.h
│   │   │   ├── bundled
│   │   │   │   ├── chrono.h
│   │   │   │   ├── color.h
│   │   │   │   ├── core.h
│   │   │   │   ├── format.h
│   │   │   │   ├── format-inl.h
│   │   │   │   ├── LICENSE.rst
│   │   │   │   ├── locale.h
│   │   │   │   ├── ostream.h
│   │   │   │   ├── posix.h
│   │   │   │   ├── printf.h
│   │   │   │   ├── ranges.h
│   │   │   │   └── time.h
│   │   │   ├── fmt.h
│   │   │   └── ostr.h
│   │   ├── formatter.h
│   │   ├── logger.h
│   │   ├── sinks
│   │   │   ├── android_sink.h
│   │   │   ├── ansicolor_sink.h
│   │   │   ├── base_sink.h
│   │   │   ├── basic_file_sink.h
│   │   │   ├── daily_file_sink.h
│   │   │   ├── dist_sink.h
│   │   │   ├── msvc_sink.h
│   │   │   ├── null_sink.h
│   │   │   ├── ostream_sink.h
│   │   │   ├── rotating_file_sink.h
│   │   │   ├── sink.h
│   │   │   ├── stdout_color_sinks.h
│   │   │   ├── stdout_sinks.h
│   │   │   ├── syslog_sink.h
│   │   │   └── wincolor_sink.h
│   │   ├── spdlog.h
│   │   ├── tweakme.h
│   │   └── version.h
│   ├── spdlogWrap.h
│   └── spdlogWrapM.h
├── makefile
├── spdlog_app
└── src├── spdlogWrap.cpp└── test_main.cpp9 directories, 60 files
root@ubuntu:~/share/gateway/spdlog_wrap# 

root@ubuntu:~/share/gateway/spdlog_wrap# make clean
clean:
rm -rf build
rm -rf spdlog_app
clean ok
root@ubuntu:~/share/gateway/spdlog_wrap# make all
mkdir -p build
arm-nuvoton-linux-gnueabi-g++ -I./ -W -Wall -std=c++11 -Wno-psabi -lc -I ./include -c src/test_main.cpp -o build/src/test_main.o
arm-nuvoton-linux-gnueabi-g++ -I./ -W -Wall -std=c++11 -Wno-psabi -lc -I ./include -c src/spdlogWrap.cpp -o build/src/spdlogWrap.o
src/spdlogWrap.cpp:22:10: warning: unused parameter ‘queuesize’ [-Wunused-parameter]bool spdlogWrap::Initspdlog(const char* logfile, unsigned int queuesize, unsigned int filesize, unsigned int backnum,\^
arm-nuvoton-linux-gnueabi-g++ -L./ -lpthread -levent -lrt -o spdlog_app build/src/test_main.o build/src/spdlogWrap.o
root@ubuntu:~/share/gateway/spdlog_wrap# ls -la
total 1408
drwxr-xr-x 5 root root    4096 Nov 27 22:04 .
drwxr-xr-x 7 root root    4096 Nov 17 20:20 ..
drwxr-xr-x 3 root root    4096 Nov 27 22:03 build
drwxr-xr-x 3 root root    4096 Nov 25 20:59 include
-rwxr--r-- 1 root root    1687 Nov 17 19:18 makefile
-rwxr-xr-x 1 root root 1416036 Nov 27 22:04 spdlog_app
drwxr-xr-x 2 root root    4096 Nov 25 21:14 src
root@ubuntu:~/share/gateway/spdlog_wrap# 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/479537.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL系列之远程管理(安全)

导览 前言Q&#xff1a;如何保障远程登录安全一、远程登录的主要方式1. 用户名/口令2. SSH3. SSL/TLS 二、使用TLS协议加密连接1. 服务端2. 客户端 结语精彩回放 前言 在我们的学习或工作过程中&#xff0c;作为开发、测试或运维人员&#xff0c;经常会通过各类客户端软件&…

扫振牙刷设计思路以及技术解析

市面上目前常见的就两种&#xff1a;扫振牙刷和超声波牙刷 为了防水&#xff0c;表面还涂上了一层防水漆 一开始的电池管理芯片&#xff0c;可以让充电更加均衡。 如TP4056 第一阶段以恒流充电&#xff1b;当电压达到预定值时转入第二阶段进行恒压充电&#xff0c;此时电流逐…

Hot100 - 除自身以外数组的乘积

Hot100 - 除自身以外数组的乘积 最佳思路&#xff1a; 此问题的关键在于通过两次遍历&#xff0c;分别计算从左侧和右侧开始的累积乘积&#xff0c;以此避免使用额外的除法操作。 时间复杂度&#xff1a; 该算法的时间复杂度为 O(n)&#xff0c;因为我们只需要遍历数组两次。…

一个vue项目如何运行在docker

将 Vue.js 应用程序通过 Docker 发布是一个非常常见的做法&#xff0c;它可以帮助你轻松地部署应用到不同的环境中。下面是一个简单的指南&#xff0c;介绍如何为 Vue.js 项目创建 Dockerfile 并进行构建和运行。 第一步&#xff1a;安装 Docker 确保你的开发机器上已经安装了…

【公益接口】不定时新增接口,仅供学习

文章日期&#xff1a;2024.11.24 使用工具&#xff1a;Python 文章类型&#xff1a;公益接口 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法&#xff…

使用phpStudy小皮面板模拟后端服务器,搭建H5网站运行生产环境

一.下载安装小皮 小皮面板官网下载网址&#xff1a;小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; 安装说明&#xff08;特别注意&#xff09; 1. 安装路径不能包含“中文”或者“空格”&#xff0c;否则会报错&#xff08;例如错误提示&#xff1a;Cant cha…

DolphinDB 登陆伦敦!携手中英人工智能协会共话 AI 未来

11 月 9 日&#xff0c;DolphinDB 联合中英人工智能协会&#xff08;CBAIA&#xff09;在全球人工智能中心、今年三位诺贝尔奖得主的诞生地——伦敦盖茨比计算神经科学中心举办 AI 技术交流会。来自人工智能、量化投资等领域的 150 多位全球专家齐聚一堂&#xff0c;共同探讨人…

爬虫与反爬-Ja3指纹风控(Just a moment...)处理方案及参数说明

概述&#xff1a;本文将针对 Ja3 指纹检测风控进行处理&#xff0c;举例了一个案例并使用两种不同的破解方案进行突破&#xff0c;同时深入了解指纹间不同字符所代表的含义 指纹检测背景&#xff1a; 1、每一个设备、软件都有独属于自己的设备信息、版本号、加密算法、椭圆算…

数据结构——排序算法第二幕(交换排序:冒泡排序、快速排序(三种版本) 归并排序:归并排序(分治))超详细!!!!

文章目录 前言一、交换排序1.1 冒泡排序1.2 快速排序1.2.1 hoare版本 快排1.2.2 挖坑法 快排1.2.3 lomuto前后指针 快排 二、归并排序总结 前言 继上篇学习了排序的前面两个部分:直接插入排序和选择排序 今天我们来学习排序中常用的交换排序以及非常稳定的归并排序 快排可是有多…

华为云云连接+squid进行正向代理上网冲浪

1 概述 ‌Squid‌是一个高性能的代理缓存服务器&#xff0c;主要用于缓冲Internet数据。它支持多种协议&#xff0c;包括FTP、gopher、HTTPS和HTTP。Squid通过一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求&#xff0c;这使得它在处理请求时具有较高的效率‌。…

杰发科技AC7803——不同晶振频率时钟的配置

计算公式 PLL_POSDIV [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62] PLL_PREDIV_1 1 2 4 USE_XTAL 24M SYSCLK_FREQ 64M SYSCLK_DIVIDER 1 VCO USE_XTAL*…

攸信技术:运动文化激发企业活力,赋能体育行业新未来

在攸信技术&#xff0c;运动文化如同春日暖阳&#xff0c;温暖着每一位员工的心。这份文化&#xff0c;源自盈趣科技的深厚底蕴&#xff0c;橙色不仅传递着3POS文化中的激情与活力&#xff0c;更成为了攸信人共同的精神标识。公司的每一个角落&#xff0c;都洋溢着对运动的热爱…

【ubuntu24.04】GTX4700 配置安装cuda

筛选显卡驱动显卡驱动 NVIDIA-Linux-x86_64-550.135.run 而后重启:最新的是12.6 用于ubuntu24.04 ,但是我的4700的显卡驱动要求12.4 cuda

LightRAG - 更快更便宜的GraphRAG

检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;已经成为提升大型语言模型&#xff08;LLMs&#xff09;能力的重要方法之一&#xff0c;通过整合外部知识&#xff0c;显著改善了生成内容的质量和相关性。 RAG 的局限性 传统的 RAG 系统虽然表现优…

TCP/IP协议攻击与防范

一、TCP/IP协议攻击介绍 1.1 Internet的结构​ LAN&#xff1a;局域网 WAN&#xff1a;广域网 WLAN&#xff1a;无线局域网 私有IP地址与公有IP地址&#xff1f; 私有地址&#xff1a;A类&#xff1a;10.0.0.0~10.255.255.255 B类&#xff1a;172.16.0.0~172.31.255.255…

机器学习模型——线性回归

文章目录 前言1.基础概念2.代价函数3.单变量线性回归3.1加载数据3.2初始化超参数3.3梯度下降算法3.3.1初次梯度下降3.3.2 多次梯度下降3.3.3结果可视化 前言 随着互联网数据不断累积&#xff0c;硬件不断升级迭代&#xff0c;在这个信息爆炸的时代&#xff0c;机器学习已被应用…

Flink CDC 使用实践以及遇到的问题

背景 最近公司在做一些业务上的架构调整&#xff0c;有一部分是数据从mysql采集到Starrocks&#xff0c;之前的一套方法是走 debezium 到 puslar 到 starrocks,这一套下来比较需要配置很多东西&#xff0c;而且出现问题以后&#xff0c;需要修改很多配置&#xff0c;而且现阶段…

Pgsql:json字段查询与更新

1.查询json字段的值 SELECT attribute_data->>设施类别 mycol, * FROM gis_coord_data WHERE attribute_data->>设施类别阀门井 查询结果如下&#xff1a; 2.更新json字段中的某个属性值 UPDATE gis_coord_data SET attribute_data(attribute_data::jsonb ||{&quo…

DAMODEL丹摩 | 关于我部署与使用FLUX.1+ComfyUI生成了一位三只手的jk美少女这回事

DAMODEL丹摩 | 关于我部署与使用FLUX.1ComfyUI生成了一位三只手的jk美少女这回事 最终效果图FLUX.1简介部署流程1. 创建资源2. 登录实例3. 部署ComfyUI4. 部署FLUX.1 使用流程1. 运行FLUX.1 导入工作流 声明&#xff1a;非广告&#xff0c;为用户使用体验分享 最终效果图 FLUX.…

d3-contour 生成等高线图

D3.js 是一个强大的 JavaScript 库&#xff0c;用于创建动态、交互式数据可视化。d3-contour 是 D3.js 的一个扩展模块&#xff0c;用于生成等高线图&#xff08;contour plots&#xff09;。 属性和方法 属性 x: 一个函数&#xff0c;用于从数据点中提取 x 坐标。y: 一个函…