C & C++/Linux

[Linux] 리눅스 gcc 에서 c언어 컴파일, 32비트 어셈블리 코드 확인하기

Razelo 2021. 5. 20. 23:20

c언어를 컴파일 하는 과정에서 어셈블리 코드를 확인하는 과제가 있었는데

리눅스에서 컴파일했던 기억이 까마득해서 에러때문에 고생좀 했다.

 

우선 방법은 간단하다. 

그냥 .c형식의 c소스코드를 작성해주고

 

gcc -O1 -S -m32 test.c

 

이렇게 적어주면 된다. -m32는 32비트 어셈블리를 확인하겠다는거고 -S는 어셈 코드를 보겠다는거고 -O1은 최적화 단계를 설정해주는 거다. 이것도 O이 숫자인줄 알고 계속 하다가 뭔가 생겨먹은게 이상해서 그제야 알아차린거다. 지금 생각해보면 웃기긴한데 심각하게 왜 안되는지 이리저리 애먹었다... ㅋㅋ 아마 Optimization이라는 뜻인걸까? 

 

특히 c를 컴파일해줄때 

bits/libc-header-start.h: No such file or directory 오류

라는 오류가 빨갛게 터미널에 뜰텐데 (안뜨면 그냥 하면 됩니다.)

 

sudo apt-get install gcc-multilib g++-multilib 

 

이렇게 써주면 된다. 즉 지금 내 환경에서 없는거 설치해주는거다. 

 

근데 이걸 실행하려고 하는데 또 갑자기 여기서 저 문장이 실행이 안된다. 그땐 뭘하면 되냐면

(lock 혹은 closed 머시기라고 드면서 설치좀 하다가 중간에 갑자기 중단될거다. )

 

1.

sudo killall apt apt-get

 

2. 

sudo rm /var/lib/apt/lists/lock

sudo rm /var/cache/apt/archives/lock

sudo rm /var/lib/dpkg/lock*

3.

sudo dpkg --configure -a
sudo apt update

 

이렇게 3번까지 진행하고 다시 2번 -> 1번 순으로 역으로 진행하면 된다. 위에서 설명을 잘 못했는데 그냥 아래 블로그 끼고 문제 해결하면 금방 해결될거다. 

 

 

https://hellodata.tistory.com/24

 

[Ubuntu] Could not get lock 오류 처리 방법

Ubuntu 18.04에서 apt install을 시도하니 아래와 같이 오류가 발생했다. 오류 화면 조치 방법 수행 중인 프로세스 kill 처리 sudo killall apt apt-get lock 파일 삭제 sudo rm /var/lib/apt/lists/lock sudo rm..

hellodata.tistory.com

https://my-repo.tistory.com/12

 

bits/libc-header-start.h: No such file or directory 오류

64비트 쉘코드 테스트를 위해 c 소스 작성 후 컴파일 하려는데 -m32 옵션 컴파일시 bits/libc-header-start.h: No such file or directory 오류 발생하여 컴파일 불가능. sudo apt-get install gcc-multilib g++-..

my-repo.tistory.com

https://jangpd007.tistory.com/220

 

gcc 컴파일 옵션 정리

=================================================================================================== [gcc 컴파일] 1) gcc 파일명(*.c) : Default로 out 파일이 생성된다. (ex a.out) 2) gcc -c 파일명(*.c)..

jangpd007.tistory.com

 

위의 블로그에서 많은 도움을 받았다. 

반응형