반응형
gcc main.c만 하면 기본 실행파일인 a.out으로 빌드됨
실행할때는 ./a.out도 되고 ./a도 된다.
만약 실행파일의 이름을 정해주고 싶다면 gcc main.c -o main 으로 쳐주면
main이라는 이름의 실행파일이 생성된다.
그래서 little Endian에 대해 알아보면 우리가 사용하는 대부분의 intel, ARM은 little endian 방식이다.
long i = 0x12345678(총 4바이트)이라고 변수를 주면 메모리 Stack에 저장이됨. 1이 MSB 8이 LSB
32bit processor에서는 D0~D31까지 1bit씩 4Byte의 데이터 버스폭을 가짐.
strip main을 하면 file size를 더 낮춰줄수 있고 strip되지 않은 실행파일은 디버그용이고 릴리즈용은 대부분 strip과정을 거친다.
pi@pi08:~ $ file main
main: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=45ae026e3dc3bab4aa604726765d9822855a461c, for GNU/Linux 3.2.0, not stripped
pi@pi08:~ $ strip main
pi@pi08:~ $ file main
main: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=45ae026e3dc3bab4aa604726765d9822855a461c, for GNU/Linux 3.2.0, stripped
arn에서 컴파일하면 ARM이 x86-64로 바뀜
ubuntu@ubuntu8:/srv/samba$ file main
main: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=1589a1687a315d3277baa9b1380d3a52dd966834, for GNU/Linux 3.2.0, not stripped
ubuntu@ubuntu8:/srv/samba$ scp main_arm pi@10.10.15.158:~
The authenticity of host '10.10.15.158 (10.10.15.158)' can't be established.
ECDSA key fingerprint is SHA256:h2PpXe61+9NP339liYtlpgv8zEB53tDw1KuoQiX+7Q8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.15.158' (ECDSA) to the list of known hosts.
pi@10.10.15.158's password:
main_arm
우분투에서 scp를 통해서 라즈베리파이로 보내면 라즈베리파이에 바로 전송됨!!!
따라서 다른 개발환경에서 해당 환경에 맞게 컴파일해주는 컴파일 툴체인이 필요함. 그래서 아래단계를 진행함.
그래서 우분투에서 라즈베리파이용(arm) 바이너리파일은 만드는거임.
$ sudo apt-get install gawk git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python-setuptools python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev xterm rsync curl zstd lz4 bison flex
$ sudo apt install crossbuild-essential-armhf //arm 32bit 툴체인 설치
이걸 설치하게 되면 라즈베리파이용 실행파일을 다 만들 수 있음.
ubuntu@ubuntu8:/srv/samba$ arm-linux-gnueabihf-gcc main.c -o main_arm
ubuntu@ubuntu8:/srv/samba$ file main_arm
main_arm: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=ad7f0593cb88679335f0aef363843d1354ad406a, for GNU/Linux 3.2.0, not stripped
반응형
'Linux BSP' 카테고리의 다른 글
[Ubuntu] Ctag 사용 (0) | 2024.02.02 |
---|---|
[Linux] Linux 명령어 (0) | 2024.02.01 |
[Linux BSP] NFS 서버 설치해서 우분투-라즈베리파이 공유폴더 사용하기 (0) | 2024.01.31 |
[Linux BSP] VI, VIM 단축키 정리 (1) | 2024.01.31 |
[Linux BSP] Samba 설치해서 윈도우-우분투 간 공유폴더 사용하기 (0) | 2024.01.31 |