当前位置: 首页 > news >正文

xmake+xrepo自建仓库添加交叉编译工具链

xmake+xrepo自建仓库添加交叉编译工具链

最近想将交叉编译工具链放到xrepo自建仓库中,在xmake中引用,方便多个电脑快速实现交叉编译。

xmake官方文档感觉不够详细,折腾了好久,这里做个记录。

基本步骤如下:

  1. 添加自建仓库地址到xrepo的repo列表;
  2. 打包上传编译链到自建仓库;
  3. 工程的xmake.lua添加交叉编译工具链配置

1.自建xrepo包仓库

直接Fork或者将官方包仓库上传到自己的git仓库,xrepo官方仓库地址:

xmake-io/xrepo: 🗂️ A cross-platform C/C++ package manager based on Xmake (github.com)

xrepo: 一个基于 Xmake 的跨平台 C/C++ 包管理器 (gitee.com)

添加自建仓库地址到xrepo的搜索仓库:

$ xrepo add-repo myrepo https://github.com/mygroup/myrepo

添加后可以使用list-repo命令查看:

none@ubuntu:~/toolchain/packages$ xrepo list-repo
global repositories:gitlab https://git.abc.cn/xxx/toolchain.git build-artifacts https://gitee.com/xmake-mirror/build-artifacts.git main xmake-repo https://gitee.com/tboox/xmake-repo.git master builtin-repo /home/none/.local/share/xmake/repository 4 repositories were found!

2.上传文件到自建包仓库

这里使用树莓派的一个交叉编译工具链,打包成tgz压缩包。放在对应目录下:

none@ubuntu:~/toolchain/packages/r/rpi_toolchain$ ls  ../../
7  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
none@ubuntu:~/toolchain/packages/r/rpi_toolchain$ tree .
.
├── rpi
│   └── rpi_toolchain_4.9.3.tgz
└── xmake.lua1 directory, 2 files
none@ubuntu:~/toolchain/packages/r/rpi_toolchain$ 

编写xmake.lua:

package("rpi_toolchain")set_kind("toolchain")-- set_homepage("https://gcc.gnu.org/")set_description("The raspberry pi toolchain")add_versions("1.0.0", "local")on_install("@linux", function (package)-- 解压工具链压缩包os.vrunv("tar", {"-xzvf", path.join(os.scriptdir(), "rpi", "rpi_toolchain_4.9.3.tgz")})-- 复制工具链到安装目录os.vcp("arm-rpi-4.9.3-linux-gnueabihf/*", package:installdir())end)on_test(function (package)print("package:installdir: ", package:installdir())os.vrun("arm-linux-gnueabihf-gcc --version")end)

工具链文件放在仓库中,所以不用配置url,下面这个不确定是不是必要的,感兴趣的朋友可以试试去掉:

add_versions("1.0.0", "local")

添加工具链及xmake.lua之后,git push推到服务器即可。

然后就可以使用xrepo search搜索我们的包,搜索到即可。

通过xrepo install安装rpi_toolchain:

xrepo install -vD rpi_toolchain

-vD可以显示详细的安装日志及错误输出。

3.在工程中集成交叉编译工具链

创建一个demo工程:

xmake create -l c++ demo

修改xmake.lua:

add_rules("mode.debug", "mode.release")-- 引用rpi_toolchain包
add_requires("rpi_toolchain")-- 定义toolchain
toolchain("rpi_cc")set_kind("cross")target("demo")set_kind("binary")add_files("src/*.c")-- 将编译链与包绑定set_toolchains("rpi_cc@rpi_toolchain")

此时进行编译,即可得到交叉编译的bin文件:

none@ubuntu:~/demo$ xmake -rv
[ 50%]: cache compiling.release src/main.c
/home/none/.xmake/packages/r/rpi_toolchain/1.0.0/725e51fe81b74141ade9efbd3ccaf900/bin/arm-linux-gnueabihf-gcc -c -fvisibility=hidden -O3 -DNDEBUG -o build/.objs/demo/linux/x86_64/release/src/main.c.o src/main.c
checking for flags (-MMD -MF) ... ok
checking for flags (-fdiagnostics-color=always) ... ok
[ 75%]: linking.release demo
/home/none/.xmake/packages/r/rpi_toolchain/1.0.0/725e51fe81b74141ade9efbd3ccaf900/bin/arm-linux-gnueabihf-g++ -o build/linux/x86_64/release/demo build/.objs/demo/linux/x86_64/release/src/main.c.o -s
[100%]: build ok, spent 0.353s
none@ubuntu:~/demo$ 

相关文章:

xmake+xrepo自建仓库添加交叉编译工具链

xmakexrepo自建仓库添加交叉编译工具链 最近想将交叉编译工具链放到xrepo自建仓库中,在xmake中引用,方便多个电脑快速实现交叉编译。 xmake官方文档感觉不够详细,折腾了好久,这里做个记录。 基本步骤如下: 添加自建…...

论文阅读》学习了解自己:一个粗略到精细的个性化对话生成的人物感知训练框架 AAAI 2023

《论文阅读》学习了解自己:一个粗略到精细的个性化对话生成的人物感知训练框架 AAAI 2023 前言 简介研究现状任务定义模型架构Learning to know myselfLearning to avoid Misidentification损失函数实验结果消融实验 前言 亲身阅读感受分享,细节画图解释…...

[Java EE] 网络编程与通信原理(三):网络编程Socket套接字(TCP协议)

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …...

MyBatis懒加载数据(大批量数据处理)

使用范例 Cursor约定使用Iterator去懒加载数据,以时间换空间,非常适合处理通常无法容纳在内存中的数百万个项目查询。如果在 resultMap 中使用集合,则必须使用 resultMap 的 id 列对游标 SQL 查询进行排序(resultOrdered“true”)。 //为了避…...

MySQL--联合索引应用细节应用规范

目录 一、索引覆盖 1.完全覆盖 2.部分覆盖 3.不覆盖索引-where条件不包含联合索引的最左则不覆盖 二、MySQL8.0在索引中的新特性 1.不可见索引 2.倒序索引 三、索引自优化--索引的索引 四、Change Buffer 五、优化器算法 1.查询优化器算法 2.设置算法 3.索引下推 …...

【spring boot+Lazy ORM+mysql】开发一个数据库管理系统实现对应数据库数据查看和修改

【spring bootLazy ORMmysql】开发一个数据库管理系统实现对应数据库数据查看和修改 演示项目地址:http://124.222.48.62:30193/wu-smart-acw-ui/index.html#/login (admin/admin) 功能 用户登录注册新增、编辑数实例新增、编辑数据库信息…...

知识分享:隔多久查询一次网贷大数据信用报告比较好?

随着互联网金融的快速发展,越来越多的人开始接触和使用网络贷款。而在这个过程中,网贷大数据信用报告成为了评估借款人信用状况的重要依据。那么,隔多久查询一次网贷大数据信用报告比较好呢?接下来随小易大数据平台小编去看看吧。 首先&…...

【Day8:JAVA字符串的学习】

目录 1、常用API2、String类2.1 String类的特点2.2 String类的常见构造方法2.3 String类的常见面试题:2.3.1 面试题一:2.3.2 面试题二:2.3.3 面试题三:2.3.4 面试题四: 2.4 String类字符串用于比较的方法2.5 String类字…...

jetcache缓存

1 介绍 是阿里的双极缓存,jvm-->redis-->数据库 文档:jetcache/docs/CN at master alibaba/jetcache GitHub 2 注意事项 使用的实体类一定实现序列化接口定时刷新注解,慎用 它会为每一个key创建一个定时器 :场景为&…...

SQLSyntaxErrorException: FUNCTION dbname.to_timestamp does not exist

由于MySQL数据库高版本(如8.x)中有to_timestamp()函数,低版本中(如5.7.x)没有这个函数,服务运行报错。 自己创建函数实现功能,创建语句如下; DELIMITER // CREATE FUN…...

Borel-Cantelli 引理

翻译自大佬 https://huarui1998.com/Notes/math/borel-cantelli.html 1. 集序列的 lim ⁡ inf ⁡ \lim\inf liminf 和 lim ⁡ sup ⁡ \lim\sup limsup 类似于定义实数序列 { a k } \{a_k\} {ak​} 的 lim ⁡ inf ⁡ \lim\inf liminf 和 lim ⁡ sup ⁡ \lim\sup limsup, …...

算法训练营第四十一天 | LeetCode 509 斐波那契数列、LeetCode 70 爬楼梯、LeetCode 746 使用最小花费爬楼梯

LeetCode 509 斐波那契数列 这题动规五部曲都定义得比较明确。首先是dp数组下标,题目中给定F(0) 0说明从0开始,dp[i]直接表示F(i)的值即可。递推公式也直接给出了,也给了开头两个作为递推基础的数值作为初始化依据。遍历顺序也指明是从前往…...

网络其他重要协议(DNS、ICMP、NAT)

1.DNS DNS是一整套从域名映射到IP的系统 1.1 DNS背景 TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆,例如我们想访问百度就会在浏览器中输入baidu.com而不是百度的IP地址。于是人们发明了一种叫主机名的东西, 是…...

利用PyCSP3库(含大量全局约束)进行组合约束建模

文章目录 1. 什么是 PyCSP3 ?2. 安装方法(Windows)2.1 通过 Google_colab 直接运行2.2 通过 pip 进行安装3. 快速入门3.1 声明变量3.2 更新约束3.3 定义目标3.4 常用的全局约束1. 什么是 PyCSP3 ? PyCSP3 是 Python 中的一个库,用于对组合约束问题进行建模,包括 约束满足…...

解决updateByExample时属性值异常的问题(部分属性值没有使用占位符?进行占位,而是变成了属性的名称)

目录 场景简介代码片断实体类 报错信息排查原因解决测试过程解决方案 场景简介 1、程序将mybatis框架升级为3.5.9版本后执行updateByExample方法时报错 代码片断 Condition condition new Condition(MbCcsSessionConfig.class); condition.createCriteria().andEqualTo(&quo…...

[C++][algorithm][Eigen] 基于Eigen实现Softmax函数

1 简介 Softmax函数是机器学习和深度学习中一个非常重要的激活函数,它在多分类问题中尤其关键。Softmax函数能够将一个向量或一组实数转换成概率分布,使得每个元素的值都在0到1之间,并且所有元素的和为1。本博客文章《【Eigen】基于Eigen实现…...

一招教大家,如何移除受保护的excel工作表的编辑权限限制?

有时候,我们打开工作表发现只有部分单元格可以编辑,点击其他单元格都显示“您试图更改的单元格或图标受保护”,既没法正常编辑或下拉填充,也没有办法快捷筛选。这时候我们可以通过输入密码解除保护,就可以正常编辑了。…...

Python 全栈体系【四阶】(五十三)

第五章 深度学习 十二、光学字符识别(OCR) 2. 文字检测技术 2.3 DB(2020) DB全称是Differentiable Binarization(可微分二值化),是近年提出的利用图像分割方法进行文字检测的模型。前文所提…...

民国漫画杂志《时代漫画》第27期.PDF

时代漫画27.PDF: https://url03.ctfile.com/f/1779803-1248635258-b6a842?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!...

图论(四)—最短路问题(Dijkstra)

一、最短路 概念:从某个点 A 到另一个点B的最短距离(或路径)。从点 A 到 B 可能有多条路线,多种距离,求其中最短的距离和相应路径。 最短路径分类: 单源最短路:图中的一个点到其余各点的最短路径…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...