Linux

    [Linux System Programming] File System #3

    Linux File Structure 리눅스는 모든 게 다 파일로 이루어져있다. 파일 시스템을 이해하는 것은 파일 입출력 작업을 수행하고 리눅스/유닉스 시스템을 이해하는 데 시작점이라고 할 수 있다. System Call open read write close ioctl (device driver에 제어 정보 전달) Low-Level File Access 리눅스에선 기본적으로 3가지의 파일이 열려있고 각 파일을 id로 구분한다. 다음 3 파일은 운영체제가 시작되면서 바로 오픈된다. 0: standard input(stdin) 1: standard output(stdout) 2: standard error(stderr) write 사용법 man 2 write 1번 매뉴얼: 리눅스 명령어관련 2번 매뉴얼: ..

    [Linux System Programming] GCC 컴파일러 사용법 #2

    컴파일 과정 소스코드는 다음과 같은 과정으로 컴파일되어 실행파일이 된다. 전처리기(preprocessor): 소스코드의 주석제거, define을 치환하는 기능 컴파일러(compiler): 어셈블리 파일로 변환(어셈블리어는 CPU 명령어 조합으로 CPU에 의존적) 어셈블러(assembler): object 코드 파일로 변환. object 파일은 0과 1로 이루어진 바이너리 코드(아직 주소 정보가 확정되지 않음) 링커(linker): object 파일을 묶어 실행 코드 파일로 변환. 운영체제가 로딩할 수 있도록 주소 정보를 할당한 파일을 만들어 낸다.(링커는 운영체제에 의존적) GCC 명령어 명령창에서 gcc 매뉴얼을 확인해보자. GCC(1) GNU GCC(1) NAME gcc - GNU project C ..

    [Linux System Programming] vi cheat sheet #1

    전체 명령어 정리 입력모드 i 현재 커서 앞에 입력한다. a 현재 커서 뒤에 입력한다. o 커서가 위치한 행의 다음 행에 입력한다. I(대문자 i) 커서가 위치한 행의 첫 컬럼으로 이동하여 입력한다. A 커서가 위치한 행의 마지막 컬럼으로 이동하여 입력한다. O 커서가 위치한 행의 이전 행에 입력한다. 커서 이동 k 커서를 위로 이동한다. j 커서를 아래로 이동한다. h 커서를 왼쪽으로 이동한다. l 커서를 오른쪽으로 이동한다. ^ / O 커서를 현재 행의 처음으로 이동한다. $ 커서를 현재 행의 마지막으로 이동한다. - 커서를 한줄 위 처음으로 이동한다. + / Enter 커서를 다음 행의 처음으로 이동한다. H 커서를 화면의 맨 윗행으로 이동한다. M 커서를 화면의 중간 행으로 이동한다. L 커서를 ..

    [Python] setup.py와 requirements.txt의 차이점과 사용방법

    파이썬 라이브러리는 Pypi에서 찾을 수 있다. 각각의 라이브러리가 제공될 때 문제없이 배포될 수 있도록 패키지는 일련의 메타데이터를 포함하게 된다. 이 메타데이터는 명칭, 버전, 의존성 등을 적게된다. 라이브러리에 메타데이터를 작성할 수 있도록 다음과 같은 형식을 setup.py 파일에서 사용할 수 있다. from setuptools import setup setup( name="MyLibrary", version="1.0", install_requires=[ "requests", "bcrypt", ], ) 이 명세에는 이 의존성을 어디에서 가져와 해결해야 하는지에 대해서는 적혀있지 않다. 단순히 requests, bcrypt라고만 적혀있고 이 의존성이 위치하고 있는 URL도 파일 경로도 존재하지 않는..

    [Linux System Programming] Makefile 기초, 변수, 생성 규칙, 재귀, 함수...

    [Linux System Programming] Makefile 기초, 변수, 생성 규칙, 재귀, 함수...

    🌈 시작하기 Makefile은 큰 프로그램의 어느 부분을 다시 컴파일해야 하는지 결정하는 데 사용된다. 대부분의 경우 C 또는 C++ 파일이 컴파일된다. 다른 언어에는 일반적으로 Make와 유사한 목적을 수행하는 자체 도구가 있다. Make는 변경된 파일에 따라 일련의 지침을 실행해야 하는 경우 컴파일을 넘어서도 사용할 수 있다. 다음은 Make로 빌드할 수 있는 종석성 그래프의 예이다. 파일의 종속성이 변경되면 파일이 다시 컴파일된다. C/C++ 대체 빌드 시스템은 SCons, CMake, Bazel, Ninja다. Visual Studio와 같은 일부 편집기에는 자체 빌드 도구가 있다. Java의 경우 Ant, Maven, Gradle이 있다. Go 및 Rust와 같은 다른 언어에는 자체 빌드 도구가..