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 계정으로 전환.