[C in Linux] Makefile
·
C & C++/C in Linux
Makefile이란? Linux상에서 반복적으로 발생하는 컴파일을 쉽게하기위해서 사용하는 make프로그램의 설정 파일. Makefile을 통해 라이브러리 및 컴파일러 환경을 관리할 수 있다. Incremental build를 사용하기 위함. Incremental build란? 반복적인 빌드 과정에서 변경된 소스코드에 의존성(Dependency)이 있는 대상들만 추려서 다시 빌드하는 기능이다. 예를 들어, 위의 빌드 예제에서 main.c의 한 줄만 바꾸고 다시 빌드할 때, 컴파일과 링크만 수행하는 경우가 이에 해당한다. Makefile의 기본 구조 파일명 : Makefile Makefile은 Target(대상), 의존 관계(Dependency), 명령(Recipe/Command)의 세가지로 아루어진다. -..
[C] 포인터, strcpy, strncpy
·
C & C++
포인터(pointer) 해석해보면 '무언가를 가리키는 것' 이라고 할 수 있다. 변수가 컴퓨터에 저장될 때를 그림으로 나타내면 왼쪽과 같다. 특정 주소를 갖는 메모리에 변수의 크기 만큼 할당된다. 크기가 커져 메모리를 더 사용할 때에는 변수의 시작위치의 주소가 해당 변수의 주소가 된다. 포인터 변수는 메모리에 가리키고 싶은 주소를 담게하는 변수다. 포인터는 함수를 이용할 때 진가를 발휘한다. 함수에서 매개변수는 인자를 전달할 때 복사해서 사용한다. 즉, 원래 변수는 다른 함수에 매개변수로 주어져도 수정할 수 없다. 따라서 포인터로 메모리의 주소를 넘겨주면 다른 함수에서도 메모리에 직접적으로 참조할 수 있게된다. strcpy과 strncpy로 예를 들어보자. strcpy 헤더파일의 함수로, string c..
[C in Linux] gcc 그리고 unistd.h
·
C & C++/C in Linux
gcc란? gcc(GNU Compiler Collection), 자유 소프트웨어 중에 가장 잘 알려진 GCC는 원래 C만을 지원했던 컴파일러로 GNU C Compiler 였지만, 현재는 C++, Java, 포트란, 에이다 등 여러 언어를 컴파일할 수 있게 되면서, 현재의 이름으로 바뀌었다. 컴파일 방법 $ gcc [파일 이름] 위 처럼 컴파일하게 되면, a.out 실행파일이 생성된다. 그 파일을 실행하면 컴파일한 파일의 결과를 볼 수 있다. $ gcc -o [실행 파일 이름] [파일 이름] 위 처럼 실행 파일 이름을 지정할 수 있다. $ gcc -o [실행 파일 이름] [파일 이름 1] [파일이름 2] ... 위 처럼 컴파일하게 되면, 여러 c파일을 #include 하지 않고 사용할 수 있다. main함..
[C in Linux] start C
·
C & C++/C in Linux
개발환경 : WSL(Window Subsystem for Linux), Mac OS 에디터 : Vim(Vi Mproved) 컴파일러 : gcc (GNU Compiler Collection) 참조 : https://www.joinc.co.kr/w/Site/C/Documents/CprogramingForLinuxEnv/Ch3_StartC C 프로그램의 구조 프로그램은 하나 이상의 함수로 이루어진다. 반드시 하나의 main함수를 포함해야 한다. 함수는 서로 독립적인 관계에 있다. 함수(Function) 입력 데이터 +--\ /--------------+ | | | | +-----------/ \-----+ 출력결과 위의 이미지는 함수의 개념을 전형적으로 설명해주고 있다. 이미 초등학교때 소개된 개념이다. 함수..
[C in Linux] Linux 와 C
·
C & C++/C in Linux
1. Linux 와 C 최초에 C는 시스템프로그래밍을 위한 언어로 개발되었으며, 상업적 및 학습적인 용도로 성공한 최초의 운영체제라 할 수 있는 Unix운영체제를 만드는 데에 사용되었다. 한마디로 Unix와 C는 뗄레야 뗄 수 없는 관계인 것이다. 이견이 있을 수 있지만 운영체제의 선조격인 Unix를 이해하는 것은 컴퓨팅환경을 이해하는 가장 좋은 방법이며, Unix를 이해하는 가장 좋은 방법은 C를 이해하는 것이라 할 수 있다. Linux운영체제가 Unix와 전혀 다른 운영체제라고는 하지만 Unix의 모든 철학과 구현을 그대로 포함하고 있으며, 사실상 또다른 Unix운영체제의 한 종류라고 할 수 있다. Unix의 또다른 운영체제라는데 거부감을 가진 리눅서들도 있겠지만 프로그래머의 입장에서 보자면 Linu..
[Linux 기초] cat, awk, sort, uniq
·
Linux
cat catenate 혹은 concatenate의 약어. 파일을 터미널 화면에 표시해주는 명령어 $ cat [옵션] [파일명] 옵션 옵션 설명 -b 줄번호를 화면 왼쪽에 나타낸다. 비어있는 행은 제외한다. -e 제어 문자를 ^ 형태로 출력하면서 각 행의 끝에 $를 추가한다. -n 줄번호를 화면 왼쪽에 나타낸다. 비어있는 행도 포함한다. -s 연속되는 2개이상의 빈 행을 한행으로 출력한다. -v tab과 행 바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다. -E 행마다 끝에 $ 문자를 출력한다. -T 탭(tab) 문자를 출력한다. -A -vET 옵션을 사용한 것과 같은 효과를 본다. awk 대부분의 리눅스 명령어와는 다르게 awk는 특정 단어의 약어가 아니다. awk는 최초에 awk 기능을 디자인한 ..
[Linux 기초] Redirection(리다이렉션), pipe(파이프), find 명령어
·
Linux
RTFM!!! 리눅스 공부할 때(다른 모든 공부할 때) 명심해야할 말. Redirection( '>', '>', '' : (표준 출력) 명령 > 파일 : 명령의 결과를 파일로 저장 (덮어씀) '>', '
[Linux 기초] Linux 환경변수, 쉘 변수
·
Linux
bash에서 쉘 변수와 환경변수 리눅스의 대략적인 구조는 아래와 같다. 쉘 변수 bash에서 적용되는 지역 변수를 의미. 쉘 변수로 선언한 변수는 현재 사용하는 쉘에서만 적용되는 변수다. ※ 공백이 있어서는 안됨(color = red) ※ 변수를 의미하는 '$' 표시 변수 선언 $ COLOR=red # 변수이름=값 변수 확인 $echo $COLOR 변수 삭제 $ unset COLOR 환경 변수 쉘에서 필요한 변수를 미리 저장해두는 전역 변수 다른 쉘에서도 변수가 작동한다. 환경변수 적용 방법 1. export export를 이용한 환경변수는 일시적이다. 따라서 시스템을 껏다 키거나 다시 로그인하면 없어진다. $ export 환경변수_이름=값 2. /etc/bash.bashrc 파일 수정 환경변수를 영구히..
WONILLISM
'linux' 태그의 글 목록