위와 같이 -m32 옵션을 주어 32비트로 바이너리를 컴파일하려고할때
다음과 같이 오류가 발생하는 경우가 있다.
fatal error: sys/syscall.h: No such file or directory
1 | #include <sys/syscall.h>
| ^~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:13: shellcode.o] Error 1
sys/syscall.h는 리눅스의 표준 C라이브러리의 일부이기 때문에 윈도우에서 실행했을때는 해당 라이브러리를 못찾을 수 있지만, 우분투에서 찾지못하는건 상당히 당황스럽다.
우분투에서 우분투의 표준 C 라이브러리가 설치되지않은 상황이기때문에, 이를 적절히 설치해주면된다.
64비트의 경우 :
64비트 시스템에서 32비트 어플리케이션을 컴파일하고 링크하려면, build-essential 패키지 외에도 추가로 gcc-multilib와 g++-multilib (또는 특정 시스템에 따라 libc6-dev-i386 등) 같은 멀티아키텍처 지원 패키지를 설치해야한다.
sudo apt-get update
sudo apt-get install build-essential
32비트의 경우 :
m32 플래그를 사용하여 32비트 모드로 컴파일하려 할 때, 해당 라이브러리가 시스템에 설치되어 있지 않으면 이러한 오류가 발생할 수 있다.
sudo apt-get update
sudo apt-get install gcc-multilib g++-multilib libc6-dev-i386
결론 :
Ubuntu에서 32비트 컴파일을하려할때 sys/syscall.h No such file or directory Error가 발생할때 -> build-essential을 설치해도 못찾을 수 있는데 -> 이때 추가로 gcc-multilib와 g++-multilib (또는 특정 시스템에 따라 libc6-dev-i386 등) 같은 멀티아키텍처 지원 패키지를 설치해야한다.
'공부 > 이모저모' 카테고리의 다른 글
C언어 가변인자함수 구현 (...) (0) | 2024.04.12 |
---|---|
git submodule 기능 (git submodule init / git submodule update) (0) | 2024.03.25 |
위성 서비스를 사용하는 user segment에서 space segment로 데이터를 전송하는 경로 (0) | 2024.03.11 |
Ubuntu에 ida free 설치하는 방법 (설치후 qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found 문제해결) (0) | 2024.03.11 |
인공위성 펌웨어 해킹을 위한 인공위성관련 용어정리 (0) | 2024.03.11 |