본문 바로가기

System7

<Linux> gcc option [표 1] gcc 옵션 Option 의미 -E 전처리를 실행하고 컴파일을 중단 -c 소스 파일을 컴파일만 하고 링크를 수행 X, 오브젝트 파일 생성 -o 바이너리 형식의 출력 파일 이름을 지정, 지정하지 않으면 a.out라는 기본 이름이 적용 -I 헤더 파일을 검색하는 디렉토리 목록을 추가 -L 라이브러리 파일을 검색하는 디렉토리 목록을 추가 -l 라이브러리 파일을 컴파일 시 링크 -g 바이너리 파일에 표준 디버깅 정보를 포함 -ggdb 바이너리 파일에 GNU 디버거인 gdb만이 이해할 수 있는 많은 디버깅 정보를 포함 -O 컴파일 코드를 최적화 -ON 최적화 N 단계를 지정 -DFOO=RAR 명령라인에서 BAR의 값을 가지는 FOO라는 선행 처리기 매크로를 정의 -static 정적 라이브러리를 링크 -.. 2022. 4. 15.
<Linux> gcc 동작 과정 리눅스에서는 C 언어의 코드를 컴파일 하기 위하여 gcc 명령어를 사용한다. gcc는 아래의 프로그램을 차례대로 수행한다. [표1] gcc가 실행시키는 프로그램 cpp 전처리기 cc1 컴파일러 as 어셈블리 ld 링커 1. 전처리 단계 cpp는 소스 파일의 #include와 #define과 같은 #으로 시작하는 전처리기 부분 처리 필요한 해더 파일을 삽입, 실행 문장의 매크로를 상수로 변환 file.c(소스파일)이 전처리기를 거쳐 file.i가 생성되지만 디스크에 저장은 안 됨 2. 컴파일 단계 file.i가 컴파일러를 거쳐 file.s가 생성되지만 바로 어셈블 단계가 실행되므로 디스크에 저장은 안 됨 3. 어셈블 단계 file.s(소스파일)이 어셈블러를 거쳐 file.o(오브젝트 파일)가 생성 오브젝트.. 2022. 4. 15.
<Xshell> "IDOIT eMMC U-Boot >" 해결 Ltib를 공부하는 중에 Xshell을 이용하여 serial로 보드에 열결 하는 과정에서 갑자기 다음과 같은 줄이 뜨고 멈췄습니다. 알아보니 부팅중에 제가 Enter를 눌러서 멈춘 거라고 하더군요! 그냥 간단하게 "boot" 치면 됩니다! IDOIT eMMC U-Boot > boot 하면 다시 정상적으로 작동합니다! 2022. 4. 15.
<Linux> Error: Dpkg: Error Processing [Something] (--Configure) 리눅스에서 apt-get update 를 이용할 때 Error: Dpkg: Error Processing [Something] (–Configure) 같은 에러가 발생했습니다. 구글링으로 여러 방법을 이용해 보았지만 이분의 방법이 저에게 도움이 되었습니다. 감사합니다. cd /var/lib/dpkg sudo mv info info.bak sudo mkdir info sudo apt-get upgrade 참고로 이분의 방법도 약간의 효과는 있었다! rm /var/lib/dpkg/info/libc-bin.* apt-get clean apt-get update apt-get upgrade 저 같은 경우는 낮은 우분트 버전에서 해서 그런지 첫 번째 방법이 가장 좋았다. 하지만 아직도 다른 에러와 싸우는 중이다... 2022. 4. 14.