Breakpad交叉编译aarch64

        原本是在mac os上编译的,但是会出现一些问题,因此还是开了台linux容器进行编译,本文可结合之前的linux下编译breakpad共同查看。

Linux下Breakpad编译_Edward.W的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/u013379032/article/details/130754480?spm=1001.2014.3001.5502

总体过程

1. 还是下载一些基础的依赖,这边和x86平台的一样

sudo apt-get update
sudo apt install g++
sudo apt install git-all
sudo apt install build-essential
sudo apt-get install zlib1g-dev

2. 拉取代码,虽然官网建议用fetch增加依赖,不过还是直接用git一起搞定把

git clone https://chromium.googlesource.com/breakpad/breakpadcd breakpad
git clone https://chromium.googlesource.com/linux-syscall-support src/third_party/lss

3. 交叉编译一个aarch64

sudo ./configure CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ AR=aarch64-linux-gnu-gcc-ar RANLIB=aarch64-linux-gnu-gcc-ranlib --host=aarch64-linux-gnu
make

遇到的坑

        怎么说呢,越简单的问题越容易遇到坑,就上面这么简单的几个步骤,在configure步骤的坑可一点都不少。接下来我们就来盘点一下把。

1. C编译器的问题

error: C compiler cannot create executables cross compile arm64

可能的解决方案:

(1) 权限问题,需要sudo ./configure .....

(2) 如果还有问题就是交叉编译的包没有安装,需要安装aarch64的gcc和g++

sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu

2. O_TMPFILE的问题

undeclared identifier 'O_TMPFILE

这个O_TMPFILE是在Linux上的标记,如果非要用Mac编译,可以直接删掉,不影响功能

3. gmkdir不存在

gmkdir实际上就是mkdir,既然找不到,就建个软连接把。

sudo ln -s  /bin/mkdir gmkdir  

4. arc4random有问题

error: ‘arc4random’ was not declared in this scope

        在代码里面定义了三种random的方法,只需要把/src/common/linux/guid_creator.cc里面关于使用和定义arc4random相关的地方都注释掉,程序内部会自动调用其他的随机算法。

5. N_UNDF没找到

src/common/stabs_reader.cc:102:35: error: ‘N_UNDF’ was not declared in this scope

修改src/common/stabs_reader.h

#include <a.out.h>   //原本
#include <linux/a.out.h>  //修改后

6. 找不到zstd

具体问题是:

/usr/bin/ld: cannot find -lzstd

解决方案: 

sudo apt-get update
apt-get install libzstd-dev

如果还不能行的话

curl https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz -o zstd.tar.gz
tar -zvxf zstd-1.5.5.tar.gz 
cd zstd-1.5.5/
make prefix=/usr/aarch64-linux-gnu/
sudo make install

7. 找不到zlib

具体问题是

/usr/bin/ld: cannot find -lz

解决方案 

curl http://www.zlib.net/zlib-1.3.tar.gz -O output.tar.gz
tar -zvxf output.tar.gz
cd zlib-1.3
./configure --prefix=/usr/aarch64-linux-gnu/
make
sudo make install (write to cross bin)

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

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

相关文章

4.5 放映演示文稿

制作完成的演示文稿最终是为了向观众进行展示&#xff0c;因此掌握演示文稿放映的技巧至关重要。本节主要介绍演示文稿放映的相关技巧&#xff0c;包括排练计时、自定义放映、设置放映方式以及墨迹画笔等内容。 4.5.1 排练计时 当进行演讲汇报时&#xff0c;常常要使用到幻灯…

低代码的探索之路

Gartner发布报告指出&#xff0c;2023年全球低代码开发平台市场规模将达到345亿美元&#xff0c;比2022年增长20%。 目前&#xff0c;国内外已经有许多低代码平台&#xff0c;包括OutSystems、Mendix、Appian、Microsoft Power App等。这些平台提供了丰富的功能和工具&#xff…

MPC模型预测控制器学习笔记(附程序)

本文用于记录学习DR_CAN老师发布的MPC系列视频教程的相关内容&#xff0c;文章中放的源码也是DR_CAN老师提供的程序示例&#xff0c;链接如下&#xff1a; DR_CAN老师的视频教程链接&#xff08;点击可跳转&#xff09; DR_CAN老师提供的程序示例&#xff08;点击可跳转&#x…

2007-2022年上市公司污染排放数据/2007-2022年上市公司污染排放水平、污染排放量数据

2007-2022年上市公司污染排放数据/2007-2022年上市公司污染排放水平、污染排放量数据 1、时间&#xff1a;2007-2022年 2、指标&#xff1a;证券代码、year、化学需氧量、氨氮排放量、总氮、总磷、水体综合污染当量对数、二氧化硫、氮氧化物、烟尘、空气综合污染当量对数、总…

使用生成式 AI 和 Amazon Kendra 实现企业规模的图像字幕创建和搜索

Amazon Kendra 是一个由机器学习(ML)驱动的智能搜索服务。Amazon Kendra 重新构想了您的网站和应用程序的搜索功能,以便您的员工和客户可以轻松地找到散布在您组织内多个位置和内容存储库中的内容。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、…

day01-ES6新特性以及ReactJS入门

课程介绍 ES6新特性ReactJS入门学习 1、ES6 新特性 1.2、let 和 const 命令 var 之前&#xff0c;我们写js定义变量的时候&#xff0c;只有一个关键字&#xff1a; var var 有一个问题&#xff0c;变量作用域的问题&#xff0c;作用域不可控&#xff0c;就是定义的变量有时会…

MySQL的备份与恢复以及日志管理

目录 一、数据备份的重要性 二、数据库备份的分类 1、物理备份 2、逻辑备份 &#xff08;1&#xff09;完全备份&#xff1a;每次对数据进行完整的备份 &#xff08;2&#xff09;差异备份&#xff1a;备份自从上次完全备份之后被修改的过文件 &#xff08;3&#xff09…

三、原型模式

一、什么是原型模式 原型&#xff08;Prototype&#xff09;模式的定义如下&#xff1a;用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里&#xff0c;原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效&a…

Quartus II安装下载驱动

Quartus II安装下载驱动 安装步骤&#xff1a; &#xff08;1&#xff09;安装完quartus后会自带USB-Blaster的驱动程序&#xff0c;因此不用再去网上下载。 &#xff08;2&#xff09;右键点脑左下角win&#xff0c;找到设备管理器并进入。 &#xff08;3&#xff09;找到…

达梦数据库管理用户和创建用户介绍

概述 本文主要对达梦数据库管理用户和创建用户进行介绍和总结。 1.管理用户介绍 1.1 达梦安全机制 任何数据库设计和使用都需要考虑安全机制&#xff0c;达梦数据库采用“三权分立”或“四权分立”的安全机制&#xff0c;将系统中所有的权限按照类型进行划分&#xff0c;为每…

Leetcode17电话号码的组合

思路&#xff1a;用字典的形式保存号码的映射&#xff0c;实际组合是前一个数字串的组合加上后面一个数字的所有可能组合 answer_dict{2:[a,b,c],3:[d,e,f],4:[g,h,i],5:[j,k,l],6:[m,n,o],7:[p,q,r,s],8:[t,u,v],9:[w,x,y,z]} class Solution:def letterCombinations(self, d…

七、MySQL(DML)如何往表中添加数据?

1、基础语法&#xff1a; &#xff08;1&#xff09;一对一添加数据&#xff1a; 一次只能添加一组数据&#xff0c;可以指定对应字段 insert into 表名 (字段名1,字段名2,……) values (数值1.数值2&#xff0c;……) &#xff08;2&#xff09;给全部字段添加数据&#…