공부 기록장 2023. 10. 5. 12:32

w4 디렉터리 밑에 foo.c 만들기

전처리기 처리를 위해 cpp -o foo.i foo.c 를 한다

 

 

gcc -S foo.i 를 통해 컴파일을 한다.

 

그러면 foo.s 파일과 a.out이라는 실행파일이 생긴다.

 

 

cat foo.s 를 하면 위 같은 화면이 나타난다

 

다음과 같이 명령을 치면 에러가 안 나타난다.

 

다음과 같이 명령을 치면 에러가 안 나타난다. 이 때 -Wall 은 대부분의 일반적인 문제에 대해 경고를 출력한다.

다음과 같이 명령을 치면 에러가 출력된다. unsigned int 로 정의한 x 와 int 로 정의한 y 의 타입이 다르기 때문에 그렇다.

 

w4 디렉터리 밑에 as -o foo.o foo.s 명령을 통해 어셈블리 코드(foo.s)를 목적 코드(foo.o)로 변환한다.

 

 

목적코드는 cat foo.o 명령을 입력해도 볼 수 없다.

 

다음 명령을 통해 foo.i foo.o foo.s 파일을 없앤다.

 

gcc -c 명령을 입력하면 컴파일 과정 3단계를 실행한다.

 

 

gcc -c 명령을 통해 c파일을 목적코드로 만든다.

 

 

다음 명령을 실행하면 아래와 같은 어셈블리 언어로 된 부분을 볼 수 있다.

 

 

 

 

 

foo.o 파일을 지우고 gcc -o foo foo.c 를 하면 컴파일 4단계를 생략하여 실행파일을 만든다.

 

 

gcc --print-search-dirs 명령을 통해 라이브러리 디렉터리 위치를 확인할 수 있다.

결과는 아래와 같다.


w6 디렉터리를 만든다.

 

 

w6 디렉터리 안에 diary 디렉터리를 만든다.

 

 

main.c 파일을 만든 후 아래와 같이 작성한다.

 

 

 

 

memo.c 파일을 만든 후 아래와 같이 작성한다.

 

 

 

 

calendar.c 파일을 만든 후 아래와 같이 작성한다.

 

 

 

diary.h 헤더파일을 만든 후 아래와 같이 작성한다.

 

 

위 명령을 통해 memo.o calendar.o main.o 목적파일을 만든다.

 

다음 명령을 통해 diary 실행파일을 만든다.

 

 

./diary 명령으로 실행하면 위 화면과 같이 출력된다.