리눅스 (7) - 프로그램 작성과 컴파일, 자동 빌드 도구, 시스템 관리자

2025. 5. 25. 20:52·리눅스

1. 프로그램 작성과 컴파일

1) gedit 문서편집기

: GNU의 대표적인 GUI 텍스트 편집기

: GNOME 환경의 기본 편집기

  • 텍스트, 프로그램 코드, 마크업 언어 편집에 적합
  • 깔끔하고 단순한 GUI

: gedit 실행 방법

  • 메인 메뉴 : [프로그램] -> [보조 프로그램] -> [지에디트] 선택
  • 터미널 : $ gedit [파일이름] &
  • 파일 관리자 : 텍스트 파일 클릭하면 자동실행

 

 

2) gedit 메뉴

  • 파일 : 새로 만들기, 열기, 저장, 되돌리기, 인쇄
  • 편집 : 입력 취소, 다시 실행, 잘라내기, 복사, 붙여넣기, 삭제
  • 보기 : 도구모음, 상태표시줄, 전체화면, 강조 모드
  • 검색 : 찾기, 바꾸기, 줄로 이동
  • 도구 : 맞춤법 검사, 오타가 있는 단어 강조, 언어 설정, 문서 통계
  • 문서 : 모두 저장, 모두 닫기, 새 탭 그룹, 이전 문서

 

 

3) 단일 모듈 프로그램

  • 프로그램 작성 : gedit 이용
  • [보기] 메뉴 : C 구문 강조 기능 설정
  • 프로그램 편집하는 화면 : #include 같은 전처리 지시자는 황색, 주석은 파란색, 자료형 이름은 초록색, if나 while 같은 문장 키워드는 브라운 색

 

 

4) gcc 컴파일러

  • gcc(GNU cc) 컴파일러
# C 프로그램을 컴파일
# 옵션을 사용하지 않으면 실행파일 a.out를 생성함
$ gcc [-옵션] 파일
# 간단한 컴파일 실행
$ gcc longest.c
$ a.out 			// 실행

# -c 옵션 : 목적 파일 생성
$ gcc -c longest.c

# -o 옵션 : 실행 파일 생성
$ gcc -o longest longest.o
# 혹은
$ gcc -0 longest longest.c

# 실행
$ longest 			// 실행

 

 

 

5) 단일 모듈 프로그램 : longest.c

#include <stdio.h>
#include <string.h>
#define MAXLINE 100

char line[MAXLINE];
char longest[MAXLINE];
void copy(char from[], char to[]);

int main(){
	int len, max = 0;
    
    while(fgets(line,MAXLINE,stdin) != NULL) {
    	len = strlen(line);
        if (len > max) {
        	max = len;
            copy(line, longest);
		}
	}
    
    if (max > 0)
    	printf("%s", longest);
    
    return 0;
}

void copy(char from[], char to[]){
	int i;
    i = 0;
    while ((to[i] = from[i] != '\0')
    	++i;
}

 

 

 

 

6) 다중 모듈 프로그램

단일 모듈 프로그램 : 코드의 재사용(resuse) 어려움, 여러 사람이 참여하는 프로그래밍이 어려움, 예를 들어 다른 프로그램에서 copy함수를 재사용하기 힘듦

다중 모듈 프로그램 : 여러 개의 .c 파일들로 이루어진 프로그램. 일반적으로 복잡하며 대단위 프로그램인 경우에 적합.

 

예시)

  • main 프로그램과 copy 함수를 분리하여 별도 파일로 작성.
    • main.c
    • copy.c
    • copy.h // 함수의 프로토타입을 포함하는 헤더 파일
  • 컴파일
    • $ gcc -c main.c
    • $ gcc -c copy.c
    • $ gcc -o main main.o copy.o 혹은 $ gcc -o main main.c copy.c

 

 

 


2. 자동 빌드 도구

1) make 시스템의 필요성

- 다중 모듈 프로그램을 구성하는 일부 파일이 변경된 경우?

: 변경된 파일만 컴파일하고 파일들의 의존 관계에 따라 필요한 파일만 다시 컴파일하여 실행 파일을 만들면 좋음

 

- 예

: copy.c 소스 코드를 수정

: 목적 파일 copy.o 생성

: 실행파일을 생성

 

- make 시스템

: 대규모 프로그램의 경우엔 헤더, 소스파일, 목적파일, 실행파일의 모든 관계를 기억하고 체계적으로 관리하는 것이 필요. make 시스템을 이용해 효과적으로 작업.

 

 

 

2) 메이크파일

: 실행 파일을 만들기 위해 필요한 파일들. 그들 사이의 의존 관계. 만드는 방법을 기술.

- 메이크 시스템

: 메이크 파일을 이용해 파일의 상호 의존 관계를 파악하여 실행 파일을 쉽게 다시 만듦.

$ make [-f 메이크파일]

메이크시스템은 메이크파일을 이용해 보통 실행 파일을 빌드함. 옵션을 사용하여 별도의 메이크파일을 지정할 수 있음.

 

 

 

3) 메이크파일의 구성

# make 실행
$ make 혹은 $ make main
gcc -c main.c
gcc -c copy.c
gcc -o main main.o copy.o

# copy.c 파일이 변경된 후
$ make
gcc -c copy.c
gcc -o main main.o copy.o

 

 

 

 


3. 시스템 관리자

슈퍼유저 : 시스템을 관리할 수 있는 사용자로 슈퍼유저가 사용하는 계정이 root임

슈퍼유저 로그인 : 직접 루트 계정으로 로그인하거나 다른 계정으로 로그인 후 `$ su [사용자명]`

 

시스템 관리자의 역할

  • 사용자 계정 추가 및 삭제
  • 소프트웨어 설치, 업그레이드, 삭제
  • 하드웨어 추가 설치
  • 시스템 보안
  • 데이터 백업

`sudo` : 일반 사용자가 sudo 명령어를 이용해 원하는 명령어를 root 권한으로 실행 가능. 일반 사용자 계정을 생성할 때 계정 종류를 관리자로 선택.

 

사용 예시

# $ sudo 명령어

# 관리자 권한으로 apt이용해 gcc설치
$ sudo apt install gcc

# root 계정의 암호를 설정한 후 root 계정을 이용
$ sudo passwd root

 

`su` : switch user. 일반 사용자에서 su 명령어를 사용하여 root 계정으로 전환.

 

 

 

 


 

'리눅스' 카테고리의 다른 글
  • 리눅스 (6) - 원격 접속, 파일 필터링, 아카이브, 파일 압축, 파일 정렬
  • 리눅스 (5) - 쉘, 전면처리, 후면처리, 입출력 재지정, 여러 개 명령어 실행
  • 리눅스 (4) - 파일 속성, 접근 권한
  • 리눅스 (3) - 디렉터리 리스트, 파일 내용 출력, 파일 복사, 파일 이동, 파일 삭제
seo_young
seo_young
  • seo_young
    86400개의 발자국
    seo_young
  • 전체
    오늘
    어제
    • 분류 전체보기 (50) N
      • 리눅스 (11)
      • 웹 기초 (9)
      • 회로이론1 (1)
      • 자료구조 (15)
      • 백준 - C (4) N
      • 백준 - 파이썬 (7)
      • 크롤링 스터디 (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
seo_young
리눅스 (7) - 프로그램 작성과 컴파일, 자동 빌드 도구, 시스템 관리자
상단으로

티스토리툴바