树莓派下编译 PyMiniRacer

news2025/1/16 16:10:12

文: fasiondog

因需要在树莓派(及其其他各类派)下使用 akshare,但 akshare 的依赖库 PyMiniRacer 缺少 arm64 架构的包(该包已经不再维护),故在此记录下在 linux arm64 架构下编译 PyMiniRacer 的过程。有需要者可以参考,也可以从下面的链接直接下载已经编译好的 PyMiniRacer arm64 包(注:仅在 ubuntu 20.04 和 Ubuntu 22.04 下验证过):

https://gitee.com/fasiondog/hikyuu_extern_libs/releases/download/1.0.0/py_mini_racer-0.6.0-py3-none-linux_aarch64.whl

编译前准备

编译前需要安装 clang llvm lld

注:ubuntu 22.04 下,可以直接使用 apt 安装 (sudo apt install clang llvm lld);但在 ubuntu 20.04 下,无法直接使用 apt 安装 clang,请自行百度搜索如何安装。

如果未安装 llvm 和 lld,在后续编译过程中会出现如下的错误:

usr/bin/llvm-ar: not found<br>FAILED: obj/third_party/zlib/libchrome_zlib.a<br>rm -f obj/third_party/zlib/libchrome_zlib.a && "../../../../../../../usr/bin/llvm-ar" -T -r -c -s -D obj/third_party/zlib/libchrome_zlib.a @"obj/third_party/zlib/libchrome_zlib.a.rsp"<br>/bin/sh: 1: ../../../../../../../usr/bin/llvm-ar: not found

请添加图片描述

clang: error: invalid linker name in argument '-fuse-ld=lld'

请添加图片描述

安装 generate-ninja 和 ninja

ubuntu 22.04 下可以直接使用 sudo apt install gn 命令,直接安装 generate-ninja

ubuntu 20.04 需参考 generate-ninja 项目(https://github.com/o-lim/generate-ninja)自行编译,编译后,请将相应路径加入环境变量 PATH 中。

ninja 可参考(https://github.com/ninja-build/ninja)自行编译,同样需要加入加入环境变量 PATH 中

下载 PyMinRacer 源代码并作相应修改

源码地址: https://github.com/sqreen/PyMiniRacer.git

修改 helper/v8_build.py

修改第32行,保证系统的 PATH 在 depot_tools 之前,以便能够正确调用系统的 gn

请添加图片描述
按下图所示,注释掉第 136、150 行,添加右侧所示第 155、156 行

  • 第 156 行添加:”clang_base_path”: “\”/usr\””,
  • 第 157 行添加:”treat_warnings_as_errors”: “false”,

请添加图片描述
注释掉如下图所示第 299、300 行
请添加图片描述

修改 helper/build_package.py

修改第 36 行 “manylinux1_x86_64” 改为 “linux_aarch64″,如下图所示:
请添加图片描述

设置环境变量

export VPYTHON_BYPASS=”manually managed python not supported by chrome operations”

开始编译

进入 PyMiniRacer 目录下,执行如下命令:

python helper/v8_build.py

然后慢慢等 。。。(请确保自己能访问 google 相关网站,下载 chrome v8 源码)

编译过程中的错误处理

错误1

ERROR at //testing/gmock/BUILD.gn:11:1: Dependency not allowed.<br>source_set("gmock") {<br>^--------------------<br>The item //testing/gmock:gmock<br>can not depend on //third_party/googletest:gtest_config<br>because it is not in //third_party/googletest:gtest_config's visibility list: [<br>//third_party/googletest:*<br>]

请添加图片描述

该错误需要修改 py_mini_racer/extension/v8/third_party/googletest/BUILD.gn
文件,见下图中第 6 行,需要将 “visibility = [ “:" ]" 改为 "visibility = [ "” ]”
即可。由于该文件是在编译中会自动生成变更,所以需要在改文件变回 “visibility = [ “:" ]"
时,立刻将其改为"visibility = [ "
” ]”,以免影响后续编译。

错误2

ImportError: cannot import name ‘Mapping’ from ‘collections’ (/usr/lib/python3.10/collections/init.py)

请添加图片描述
上述错误,可参考 https://blog.csdn.net/NJU_Mf/article/details/128539786 修改 collections,引出 Map

错误3

…/v8/src/compiler/branch-elimination.cc:266:7: error: use of bitwise ‘|’ with boolean operands [-Werror,-Wbitwise-instead-of-logical]
if (reduced_.Set(node, true) | node_conditions_.Set(node, conditions)) {
^~~~~~~~~
||
…/v8/src/compiler/branch-elimination.cc:266:7: note: cast one or both operands to int to silence this warning
1 error generated.

请添加图片描述该错误可以在相关代码前屏蔽告警:

#ifdef GNUC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wbitwise-instead-of-logical"
#endif

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

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

相关文章

【微信小程序】 权限接口梳理以及代码实现

​ 1、权限接口说明 官方权限说明   部分接口需要经过用户授权统一才能调用。我们把这些接口按使用范围分成多个scope&#xff0c;用户选择对scope进行授权&#xff0c;当授权给一个scope之后&#xff0c;其对应的所有接口都可以直接使用。 此类接口调用时&#xff1a; 如…

小红书报告:2023美妆个护白皮书解读

导语 面对风云变幻的市场&#xff0c;消费行业始终是增长的重要引擎之一&#xff0c;其中美妆个护行业在过去六年里&#xff08;2016-2022年&#xff09;仍保持高增速与消费潜力 。 新的一年&#xff0c;市场呈现什么新变化&#xff0c;品牌又有哪些新动作&#xff1f;本期为…

20-HTML

目录 1.概念 2.创建HTML页面 3.运行HTML程序 4.HTML结构 4.1.HTML文件基本结构 4.2.标签层次结构 PS&#xff1a;开发者工具简单介绍 PS&#xff1a;快速生成代码框架&#xff1a; 5.HTML常见标签 5.1.注释标签 5.2.标题标签&#xff1a;h1 - h6 5.3.段落标签&…

Doris(8):数据导入(Load)之Insert Into

Insert Into 语句的使用方式和 MySQL 等数据库中 Insert Into 语句的使用方式类似。但在 Doris 中&#xff0c;所有的数据写入都是一个独立的导入作业。所以这里将 Insert Into 也作为一种导入方式介绍。 主要的 Insert Into 命令包含以下两种&#xff1b; INSERT INTO tbl S…

PX4控制云台的两种方式

1、配置MNT_MODE_IN参数后重启飞控&#xff0c;释放出mount的设置参数 控制信号输入为RC 则接收机必须连接对应的通道至AUX辅助通道&#xff0c;并通过MNT_MAN_*参数设置pitch/roll/yaw对应的AUX通道 &#xff08;遥控器摇杆 → 接收机通道输出 → 飞控AUX通道输入 → AUX通道…

Spring IOC 入门简介【自定义容器实例】

目录 前言 Spring简介 Spring体系结构 一、IOC控制反转思想 二、IOC自定义对象容器 1. 创建实体类&#xff0c;Dao接口&#xff0c;实现类 2. 创建配置文件bean.properties 3. 创建容器管理类 4. 创建StudentService类 5. 测试方法 6. 测试结果 前言 Spring简介 Spr…

Android 详解基本布局以及ListView和RecyclerView

前言 一个丰富的界面有很多个控件组成&#xff0c;那么就需要布局来实现控件有条不紊的摆放。 一 LinearLayout 线性布局 LinearLayout 又称作线性布局&#xff0c;是一种常用的布局。有横向和竖向两个方向。 通过下面的属性进行设置 android:orientation"vertical"…

【科研】Michaelis–Menten 曲线(米氏曲线)中反应速率的计算

参考文献&#xff1a;Standardized assays for determining the catalytic activity and kinetics of peroxidase-like nanozymes | Nature Protocols SCI-Hub链接&#xff1a; https://sci-hub.se/10.1038/s41596-018-0001-1 科研需要&#xff0c;需要绘制所制备纳米酶的Mi…

亿发软件:中小企业定制一体化管理解决方案,全面提升数据价值

亿发软件&#xff1a;中小企业定制一体化管理解决方案&#xff0c;全面提升数据价值 一体化信息管理系统是为中小企业提供简化运营、提高效率和生产力的工具。随着经济的快速发展&#xff0c;企业细分管理的多样化需求显著增加。很多企业都在为找不到适合自己的一体化信息管理…

一文看懂数据云平台的“可观测性”技术实践

背景 这是一家大型制造集团。为监控及预测工厂设备运行情况&#xff0c;IT部门在数据云平台DataSimba上按天执行数据作业&#xff0c;每24小时对工厂设备的日志数据进行分析&#xff0c;发现能对业务起到很好的辅助作用&#xff0c;效果不错。 “要不升级为每1个小时跑一次&am…

android hook(Toast BadTokenException案例)

什么是Hook? hook 技术又叫做钩子函数&#xff0c;在系统没有调用该函数之前&#xff0c;钩子程序先捕捉该消息&#xff0c;钩子函数先得到控制权&#xff0c;这时钩子函数即可以加工处理&#xff08;改变&#xff09;该函数的执行行为&#xff0c;还可以强制结束消息的传递。…

(详细)HTTP协议(应用层重点协议)

目录 一、HTTP协议工作过程 二、 协议格式 1、抓包工具Fiddler 2、HTTP请求格式 3、HTTP响应格式 4、HTTP协议格式总结 三、HTTP请求&#xff08;Request&#xff09; 1、URL &#xff08;1&#xff09;URL基本格式 &#xff08;2&#xff09;URL实例 &#xff08;…

什么是伪原创?SEO伪原创该怎么做

伪原创是指在原有的文章或内容基础上进行修改或调整&#xff0c;以产生看起来是全新内容的文章&#xff0c;但实际上并没有创造新的价值。多数情况下&#xff0c;伪原创的目的是为了在文章相对原创的情况下&#xff0c;提高搜索引擎的排名。 一、高质量伪原创 做好伪原创&#…

SpringCloud消息总线——Bus

Bus 本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 在SpringCloud Config学习过程中&#xff0c;还遗留下来一个问题&#xff1a;当运维更新git上的配置信息时&#xff0c;要想更改所有的客户端服务&#xff0c;必须得手动给客户端服务发送post请…

ESP32学习笔记14-mqtt-连接官方mqtt,onenet,thingsboard物联网平台

12.MQTT 12.0工程里的WiFi密码和ssid设置 工程的WiFi配置 ssid password 打开配置 配置ssid和密码 工程配置文件sdkconfig IP和端口配置 乐鑫服务器mqtt 12.1数据结构和配置函

力扣sql中等篇练习(四)

力扣sql中等篇练习(四) 1 游戏玩法分析IV 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 首次登录后第二天登录的玩家数量/玩家总数量(去重) # 注意首日注册指的是表中的最早的一个日期 SELECT ROUND((SELECT count(distinct t1.player_id)FRO…

给孩子买台灯什么牌子好?盘点学生专用台灯第一品牌

现在的孩子近视率很高&#xff0c;双减政策的执行&#xff0c;也有导致许多孩子长时间接触电子产品&#xff0c;没有正确的看书姿势&#xff0c;合理的用眼距离等&#xff0c;使用专业的护眼台灯&#xff0c;能让孩子眼睛拥有一个好的视力。 要注意养成预防近视好习惯&#xf…

dsp28335杂记3

文章目录 DAC实验&#xff0c;SPITLV5620DACADC0实验-------niceDMAADC实验&#xff08;外设到存储器&#xff09; 中断 了解皮毛&#xff0c;嘿嘿内置XINTF接口配置 外扩SRAM DMA支持 了解皮毛&#xff0c;嘿嘿eCAP脉冲捕获&#xff0c;重点啦eCAP输出PWM&#xff08;APWM模…

【学习笔记】从MySQL快速入门 PostgreSQL

PGSQL 菜鸟教程/在线api文档 数据类型语法 DML条件 高级 一、数据类型 数值类型&#xff1a;和mysql类似&#xff0c;叫法不同 特殊&#xff1a;serial 自增整数 名字存储长度描述范围smallint2 字节小范围整数-32768 到 32767integer4 字节常用的整数-2147483648 到 21474…

C++——入门讲解(3)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年4月19日 内容&#xff1a;C入门内容讲解 目录 前言&#xff1a; 1. 引用&#xff08;续&#xff09;&#xff1a; 1.输出型参数&#xff1a; 2.传引用返回&#xff1a; 2.常引用&#xff1a; 3.auto&#xff1a; 结…