반응형
우분투에서 arm 크로스컴파일 및 디버깅
주의 : arm 종류는 굉장히 다양하고 안드로이드, ios 디바이스 등 여기에 맞게 크로스컴파일 해야함.
(ELF 64-bit ARM aarch64, Mach-O 64-bit ARM aarch64 등 디바이스에서 돌아가게 하려면 맞춰줘야함)
여기서는 간단하게 ubuntu에서 단순히 arm 어셈블리 연습겸 크로스컴파일하고
qemu와 gdb-multiarch를 이용하여 디버깅 하는 방법을 다룸.
크로스컴파일러 설치
arm 32bit
sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install g++-arm-linux-gnueabi
arm 64bit
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu
gdb-multiarch 설치 (이거 하나로 여러 아키텍처 다 됨)
sudo apt-get install gdb-multiarch
퀘무 설치
sudo apt-get install qemu-arm-static
크로스 컴파일 하기
arm 32bit
arm-linux-gnueabi-gcc -o test32 ./test.c
arm 64bit
aarch64-linux-gnu-gcc -o test64 ./test.c
8888포트로 arm환경의 퀘무 띄우기
32bit
qemu-arm-static -L /usr/arm-linux-gnueabi -g 8888 ./test32
64bit
qemu-aarch64-static -L /usr/aarch64-linux-gnu/ -g 8888 ./test64
gdb 붙이기
32bit
gdb-multiarch
set arc arm
target remote localhost:8888
(tartget remote :8888 해도 됨)
file ~/Desktop/test32
(처음 붙을 때 gdb-multiarch ~/Desktop/test64 로 붙으면 file 명령어 생략 가능)
64bit
gdb-multiarch
set arc aarch64
target remote localhost:8888
(target remote :8888 해도 됨)
file ~/Desktop/test64
(처음 붙을 때 gdb-multiarch ~/Desktop/test64 로 붙으면 file 명령어 생략 가능)
끝.
이후 gdb 명령어 그대로 사용하며 디버깅 하면 됨.
반응형
'IoT 임베디드' 카테고리의 다른 글
gcc 64비트 환경에서 32비트로 컴파일 (2) | 2020.02.04 |
---|---|
Firmadyne 최종 Qemu 실행문 해석 (1) | 2019.10.18 |
[오류] /bin/sh 실행 시 "no such file or directory" (0) | 2019.09.30 |