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/breakpad

cd 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    //原本
#include   //修改后

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)

你可能感兴趣的:(linux,填坑,linux,服务器,运维)