분류 전체보기(68)
-
Makefile 문법 파악하기
Makefile 이란?Makefile이란 일종의 빌드시스템이다. 리눅스 개발 환경 이해하기 마지막 부분에서 gcc명령어 하나로 링크까지 할 수 있지만, 사실 대부분은 링크와 컴파일을 분리해서 사용한다. 그 이유는 점진적으로 빌드하기 위해서이다. 간단한 프로그램이야 한꺼번에 컴파일해도 시간이 오래걸리지 않겠지만, 프로그램이 사용하는 파일들이 많아지고, 그 파일들이 복잡하게 얽혀있다면 모든 파일들을 컴파일하는데는 시간이 오래걸릴 것이다.그래서 개발자들은 빌드시스템을 사용해서 수정한 부분과 그에 대해 의존성이 있는 부분만 컴파일하여 시간을 단축시킨다. Makefile의 구성 타겟 (Target) : 생성하고자 하는 것의존성 (Dependency) : 필요한 것명령어 (Command) : 해야하는 것으로 구성되..
2024.11.19 -
Parity Check Bit Encoding/Decoding
패리티 비트란?패리티 비트(Parity bit)는 정보의 전송 과정에서 오류를 측정하기 위해 추가된 비트이다. 전송하고자 하는 데이터의 끝에 1비트를 추가해서 보내는 데, 방식은 2종류가 있다. (홀수, 짝수) 위 그림의 경우는 Odd parity (홀수)의 경우이다. 실제 전송하고자 하는 데이터의 각 비트 값 중에서 1의 개수가 홀수가 되도록 하는 것이 홀수 패리티 비트이다.반대로 Even parity (짝수)는 아스키 코드의 7bit 중 1의 개수가 홀수일 경우 parity bit를 1로 하여 1의 개수가 짝수가 되도록 하는 것이다. 간단한 실습을 통해 데이터에 패리티 비트를 추가하여 변조,복조가 어떻게 되는지 확인해본다. sentence라는 배열 안에 데이터를 저장한 후 변조와 복조를 차례대로 실..
2024.11.19 -
리눅스 개발 환경 이해하기 (2)
그러면 어떻게 해야 example 파일이 실행될까? 방법은 동적으로 라이브러리를 할당하면 된다. example파일이 실행이 되지 않았던 이유는 라이브러리를 정적으로 load했기 때문에 필요한 라이브러리가 없을 경우 실행이 되지 않았다. 하지만 동적(Dynamic)으로 라이브러리를 할당하면 실행하는 중간중간마다 필요한 라이브러리가 있을 경우 load해서 사용한다. 위와 같은 방식으로 동적으로 라이브러리를 할당해주면 example파일이 정상적으로 실행되는 것을 확인할 수 있다. 사실은 gcc 내부에서도 ld를 사용하여 링킹까지 가능하다.gcc *.c -lm과 같은 방식으로 링킹이 가능한데 이는 libc,crt,ld 라이브러리가 자동으로 들어간다. 위와 같이 gcc 명령어만 사용해서 a.out파일을 실행하..
2024.11.19 -
리눅스 개발 환경 이해하기 (1)
빌드 : 소스 코드를 실행할 수 있는 바이너리 파일로 만드는 과정호스트 : 빌드가 실행되는 환경타겟 : 빌드가 된 바이너리가 동작할 환경 우리가 모바일 앱을 만드는데 개개인의 노트북을 사용해서 앱을 만든다면 내가 만든 소스 코드가 기기에서 실행할 수 있는 형태로 변환하는 과정이 빌드이고, 호스트는 개발과 빌드 작업이 이루어지는 시스템인 내 노트북이되고, 타겟은 앱이 실제로 실행될 환경인 스마트폰이 된다. 우리가 만든 소스코드를 기기에서 실행할 수 있는 형태로 변환해주는 편리한 도구들의 모음이 있는데 그것이 바로 툴체인이다. 우리가 소스 코드를 만들면 그 자체로는 컴퓨터가 이해할 수 없다. 즉 바이너리 파일인 목적파일로 변경하는 과정이 필요한데 소스코드를 기계어로 번역하는 과정이 컴파일이다. 컴파일로 생성..
2024.11.15 -
Shell script (빈 디렉토리에 .gitkeep파일 생성하기
1. 파라미터로 대상 디렉토리를 입력받기2. 대상 디렉토리의 하위 디렉토리 중에 빈 디렉토리 찾아내기3. 비어있는 디렉토리에 .gitkeep라는 빈 파일 생성하기4. 하위 디렉토리 안에 또 다른 하위 디렉토리가 있는 경우도 고려 Git에서 commit을 작성하기 위해서는 반드시 디렉토리에 파일이 존재해야한다.a라는 디렉토리위에 위와같은 구조로 하위 디렉토리를 형성하였다. 파일이 없는 하위디렉토리인 c,d,e,f,g로 인해 commit을 작성할 수 없으므로 반드시 파일을 생성해야한다. filelist=`ls -A $1`은 숨김파일까지 포함해서 모든 파일 리스트가 filelist에 들어간다. 위 예시로 보면 a 디렉토리 기준에선 $filelist는 b,c,d이다. num=`find $1/$file | wc ..
2024.11.14 -
Shell script
Shell script란?터미널에서 실행될 수 있는 명령어를 하나의 파일로 묶어서 실행하기 쉽게 만든 것, 모든 Shell script는 반드시 Shebang (사용할 shell 명시)으로 시작해야한다.Shebang은 사용할 shell script를 명시하는 것으로 script는 명시된 shell에서 동작하게 된다. 우선 #!은 스크립트의 맨 앞에서 이 파일이 어떤 명령어 해석기의 명령어 집합인지 시스템에게 알려준다.그 뒤에 나오는 것은 경로명으로, 명령어들을 해석할 프로그램의 위치를 나타낸다.보통은 #!/bin/sh를 사용하며, /bin/sh는 sh라는 쉘 프로그램의 경로이다. Shebang 이후에 사용할 명령어들을 나열한다. 그 다음 ./을 입력하면 파일 안의 명령어가 실행이 된다. 반복문 간단한 s..
2024.11.13