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.
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)