Compilación cruzada de Breakpad aarch64

        Originalmente se compiló en Mac OS, pero ocurrieron algunos problemas, por lo que se abrió un contenedor de Linux para la compilación. Este artículo se puede ver junto con el panel de compilación anterior en Linux.

Compilación de Breakpad en el blog-CSDN de Linux_Edward.W icono-default.png?t=N7T8https://blog.csdn.net/u013379032/article/details/130754480?spm=1001.2014.3001.5502

proceso general

1. Aún descargue algunas dependencias básicas, que son las mismas que las de la plataforma 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. Extraiga el código. Aunque el sitio web oficial recomienda usar fetch para agregar dependencias, aún puede usar git para hacerlo juntos.

git clone https://chromium.googlesource.com/breakpad/breakpad

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

3. Compilación cruzada de un 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

Errores encontrados

        ¿Cómo puedo decirlo? Cuanto más simple es el problema, más fácil es encontrar trampas. Solo siguiendo los simples pasos anteriores, hay muchas trampas en el paso de configuración. A continuación hagamos un balance.

1. Problemas con el compilador de C

error: C compiler cannot create executables cross compile arm64

Soluciones posibles:

(1) Los problemas de permisos requieren sudo ./configure....

(2) Si todavía hay un problema de que el paquete compilado cruzado no está instalado, debe instalar gcc y g++ de aarch64.

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

2. Problemas con O_TMPFILE

undeclared identifier 'O_TMPFILE

Este O_TMPFILE es una marca en Linux, si debe compilar con Mac, puede eliminarlo directamente sin afectar la función.

3. gmkdir no existe

gmkdir es en realidad mkdir. Como no se puede encontrar, cree una conexión suave.

sudo ln -s  /bin/mkdir gmkdir  

4. Hay un problema con arc4random.

error: ‘arc4random’ was not declared in this scope

        Se definen tres métodos aleatorios en el código: solo necesita comentar todos los lugares relacionados con el uso y la definición de arc4random en /src/common/linux/guid_creator.cc, y otros algoritmos aleatorios se llamarán automáticamente dentro del programa.

5. N_UNDF no encontrado

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

Modificar src/common/stabs_reader.h

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

6. zstd no encontrado

Las preguntas específicas son:

/usr/bin/ld: cannot find -lzstd

solución: 

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

Si todavía no funciona

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 no encontrado

La pregunta específica es

/usr/bin/ld: cannot find -lz

solución 

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)

Supongo que te gusta

Origin blog.csdn.net/u013379032/article/details/132590407
Recomendado
Clasificación