2022-12-21 Buildroot创建自己的软件包,把一个c应用编译到系统里面去运行

news2025/4/27 18:36:51

一、Buildroot 编译完成后,会在 /buildroot/output/xxxx/host/ 目录下,生成交叉编译工具,我们可以用来编译目标程序。

1、比如我现在要编译下面的c文件

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{        
   printf("Hello word! fuck you buildroot\n");
}

2、设置编译器地址变量

export PATH=/home/xxx/workspace/source/px30-linux/buildroot/output/rockchip_px30_64/host/bin:$PATH

3、编译

aarch64-buildroot-linux-gnu-gcc rkwifibt_test.c -o hello 

 4、把hello这个可执行程序放到ARM运行结果如下:

二、如何创建自定义软件包,把上面c程序放到整个buildroot里面进行编译呢?

1、创建工程目录buildroot/package/rockchip/rkwifibt_test,新建 Config.in和rkwifibt_test.mk

Config.in

config BR2_PACKAGE_RKWIFIBT_TEST
	bool "rkwifibt_test"

rkwifibt_test.mk

#############################################################
#
# RKWIFIBT_TEST
#
#############################################################
ifeq ($(BR2_PACKAGE_RKWIFIBT_TEST), y)
RKWIFIBT_TEST_VERSION:=1.0.0
RKWIFIBT_TEST_SITE=$(TOPDIR)/../external/rkwifibt_test
RKWIFIBT_TEST_SITE_METHOD=local

define RKWIFIBT_TEST_BUILD_CMDS
    $(TARGET_CC) -o $(@D)/src/rkwifibt_test_demo $(@D)/src/rkwifibt_test.c
endef

define RKWIFIBT_TEST_CONFIGURE_CMDS
	#cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake
endef



define RKWIFIBT_TEST_INSTALL_TARGET_CMDS
    $(INSTALL) -D -m 0777 $(@D)/src/rkwifibt_test_demo  $(TARGET_DIR)/usr/bin/
endef


$(eval $(generic-package))
endif

2、修改上一级 Config.in,buildroot/package/rockchip/Config.in 末行添加

source "package/rockchip/rkwifibt_test/Config.in"

 3、创建源码目录,上文的 rkwifibt_test.mk文件里已经指定了源码目录 external/rkwifibt_test。心新建external/rkwifibt_test/src/rkwifibt_test.c,内容如下

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
        printf("Hello word! fuck you buildroot\n");
        return 0;
}

 

 4、配置软件包,打开配置菜单 make menuconfig,勾选rkwifibt_test配置

 

 5、编译,make rkwifibt_test-rebuild会把编译出来的文件复制到target/usr/bin/rkwifibt_test_demo,而make rkwifibt_test-build 不会,这就是build和rebuild的区别。

make rkwifibt_test-dirclean  //清除之前的编译

make rkwifibt_test-build     //编译

make rkwifibt_test-rebuild   //重新编译

  6、把整个output目录删掉,全部编译系统后,也会在usr/bin/下面生成可执行文件。

  7、整个过程需要添加Config.in 、 rkwifibt_test.mk、rkwifibt_test.c三个文件,然后修改defconfig和config.in

 

三、参考文章

Buildroot 开发 — Firefly Wiki

嵌入式Linux构建框架Buildroot创建自己的软件包(基于传统makefile和cmake)(篇二) - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式是大数据处理的万能药?

前言&#xff1a;分布式是大数据处理的万能药&#xff1f;今天叶秋学长跟大家一起探讨这个问题~ 使用分布式集群来处理大数据是当前的主流&#xff0c;将一个大任务拆分成多个子任务分布到多个节点进行处理通常能获得显著的性能提升。因此&#xff0c;只要发现处理能力不足就可…

人数超员识别系统 yolov5

人数超员识别系统基于计算机视觉分析技术yolov5网络架构对现场画面实时分析&#xff0c;如监测到区域超员时&#xff0c;立刻抓拍存档并告警提示。YOLOv5是一种单阶段目标检测算法&#xff0c;该算法在YOLOv4的基础上添加了一些新的改进思路&#xff0c;使其速度与精度都得到了…

Java日志技术是什么

文章目录日志技术日志技术介绍日志技术体系日志技术 日志技术介绍 想清楚的知道一个系统运行的过程和详情就需要日志记录 日志介绍: 生活中的日志&#xff1a; 生活中的日志就好比日记&#xff0c;可以记录你生活的点点滴滴。 程序中的日志&#xff1a; 程序中的日志可以用来记…

04---springboot实现增删改查

1、配置文件 application.yml server:port: 8081 spring:mvc:path match:matching-strategy: ant_path_matcherdatasource:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456url: jdbc:mysql://localhost:3306/management?useUnicodetrue&use…

C++ STL 之关联容器 map 详解

文章目录Part.I AttentionChap.I 注意事项Chap.II 操作技巧Part.II FuncitonPart.III CodeChap.I mapChap.II unordered_mapChap.III multimapPart.I Attention C 中 map 提供的是一种键值对容器&#xff0c;里面的数据都是成对出现的&#xff0c;每一对中的第一个值称之为关键…

博苑股份冲刺创业板上市:上半年净利润约1亿元,李成林为董事长

近日&#xff0c;山东博苑医药化学股份有限公司&#xff08;下称“博苑股份”或“博苑医药”&#xff09;在深圳证券交易所创业板更新招股书。据贝多财经了解&#xff0c;博苑股份于2022年6月17日递交招股书&#xff0c;准备在创业板上市。 本次冲刺创业板上市&#xff0c;博苑…

服务的消费方式和服务熔断

目录 1. 服务消费方式 1.1 RestTemplate 1.2 feign 2. 服务熔断&#xff08;降级&#xff09; 2.1 在微服务架构中服务熔断的必要性 健康的微服务集群&#xff1a; ​编辑 出现故障&#xff1a; ​编辑 系统雪崩&#xff1a; ​编辑 2.2 hystrix 2.3 hystrix的使用…

[Linux]多线程的同步和互斥(线程安全 | 互斥锁 | 死锁 | 条件变量)

文章目录Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex互斥量的接口初始化互斥量销毁互斥量互斥量的加锁和解锁互斥量实现原理可重入vs线程安全常见线程不安全情况常见线程安全的情况常见不可重入的情况常见可重入的情况可重入与线程安全的联系可重入与线程安全的区别…

你易忽略的三极管电路问题1:下拉电阻

如下这个三极管共射极驱动电路中&#xff0c;B、E极之间的下拉电阻的作用&#xff1f;是否可以将其去除&#xff1f;该电阻有两个重要的作用&#xff1a;在驱动信号关闭时给三极管基极一个固定的电平。当驱动信号&#xff08;SIGNAL&#xff09;关闭时&#xff0c;若没有下拉电…

搭建Python环境(~保姆级别服务~)

文章目录前言一、搭建 Python 环境安装Python1. 找到官方网站2. 找到下载页面3. 双击安装包4. 运行 hello world安装PyCharm1. 找到官方网站2. 找到下载页面3. 双击安装包4. 运行 hello world创建一个项目选择项目所在的位置, 并选择使用的 Python 解释器.创建文件4. 编写代码5…

emoji与UTF-16、UCS-4、unicode的关系、原理和换算

emoji与UTF-16、UCS-4、unicode的关系、原理和换算 目录 emoji与UTF-16、UCS-4、unicode的关系、原理和换算 一、Unicode字符集概述 二、原理 1、UTF-16、UCS-4、unicode 2、emoji表情字符标准 3、关于肤色 一、Unicode字符集概述 https://en.wikipedia.org/wiki/Emoj…

【Python机器学习】标注任务与序列问题讲解(图文解释)

标注模型用于处理有前后关联关系的序列问题。在预测时&#xff0c;它的输入是一个观测序列&#xff0c;该观测序列的元素一般具有前后的关联关系。它的输出是一个标签序列&#xff0c;也就是说&#xff0c;标注模型的输出是一个向量&#xff0c;该向量的每个元素是一个标签&…

VScode ChatGPT 的中文插件安装使用

ChatGPT 的中文插件 由于官方服务对服务的封禁&#xff0c;大量国内代理服务全军覆没。开发者经过千辛万苦&#xff0c;找到了一个beta模型&#xff0c;目前作为 ChatGPT 正式服务上线前的过渡方案&#xff0c;供大家使用 插件安装后即处于”国内模式“&#xff0c;国内模式开…

艾美捷Annexin V-FITC凋亡检测试剂盒流式细胞术方案

FITC标记的重组人膜联蛋白V显示亮绿色荧光&#xff08;Ex&#xff08;max&#xff09;:488nm&#xff0c;Em&#xff08;max&#xff09;:530nm&#xff09;。 艾美捷Annexin V-FITC凋亡检测试剂盒化学性质&#xff1a; 应用&#xff1a;流式细胞术、荧光显微镜、荧光检测 应…

LncFinder | 非编码RNA的识别与分析神器!!!~

1写在前面 非编码RNA(ncRNAs), 是指不编码蛋白质的RNA。&#x1f617; 其中包括rRNA&#xff0c;tRNA&#xff0c;snRNA&#xff0c;snoRNA, lncRNA和miRNA等多种已知功能的RNA&#xff0c;还包括未知功能的RNA。&#x1f913; 长链非编码RNA&#xff08;lncRNA&#xff09;指的…

35. 搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入:…

机器学习100天(十六):016 逻辑回归损失函数

机器学习 100 天,今天讲的是:逻辑回归损失函数。 一、如何找到最佳分类直线 讲完了逻辑回归基本原理之后,我们再来思考一个非常关键的问题:就是如何找到最佳的分类直线呢? 如图中所示,如何判断这三条直线哪个更好?线性回归里,我们可以用均方误差作为损失函数,选择均…

非零基础自学Golang 第14章 反射 14.4 反射三定律

非零基础自学Golang 文章目录非零基础自学Golang第14章 反射14.4 反射三定律14.4.1 接口到反射类型的转换14.4.2 反射到接口类型的转换14.4.3 修改反射类型对象第14章 反射 14.4 反射三定律 在使用反射时&#xff0c;牢记这三条定律会让你对反射有更加清晰的认识。 14.4.1 接…

网络攻防中如何在海量虚假IP中找到目标服务或者设备的真实IP地址

网络攻防中如何在海量虚假IP中找到目标服务或者设备的真实IP地址。 Fav-up是一款功能强大的IP查询工具,该工具可以通过Shodan和Favicon(网站图标)来帮助研究人员查询目标服务或设备的真实IP地址。 工具安装 首先,该工具需要本地设备安装并部署好Python 3环境。然后广大研究…

5 | 如何更换证书

目录1 操作场景2 操作类型2.1 更换自有证书2.2 腾讯云托管证书2.3 一键替换证书3 结果校验1 操作场景 如果证书已过期&#xff0c;用户在浏览网站的时候会显示证书不可信&#xff1b; 2 操作类型 2.1 更换自有证书 登录 Web 应用防火墙控制台&#xff0c;在左侧导航中&…