” [환경변수] : 프로세스가 컴퓨터에 동작하는 방식에 영향주는 동적인 값들, 시스템의 기본정보 저장, 환경변수는 자식프로세스에 상속(시스템변수/사용자변수)

ㄴ변수명/값으로 구성, %변수명% 식으로 사용

ㄴ변수 값 확인 : CLI→DOS/WIN→cmd에서 echo %path% or Unix/Linux→Shell에서 echo $path

ㄴ변수 값 설정 : CLI→DOS/WIN→cmd에서 SET변수=값(SET만쓰면 전체조회) or Unix/Linux→Shell에서 env, set, printenv등(단독사용시 전체조회)

/— 리눅스기반 디바이스드라이버 실습 —/

디렉토리 //파란글씨 또는 d

일반파일 //하얀글씨 또는 -

단축아이콘 //l

권한 //r읽기,w쓰기,x실행 또는 접근, 앞에서부터 3글자씩 소유자/소유그룹/전체

<Shell script>

vim 설치후(구버전 vi로 실행해도됨)... vim <파일이름>.sh 로 생성, i/esc로 vim편집기, :wq!저장

#!<사용할 쉘> (보통 #!/bin/sh)

cat으로 코드 확인, chmod 755 <스크립트.sh>로 쓰기권한 제한

./스크립트.sh로 실행

사칙연산명령어 expr <숫자1> <연산자> <숫자2> (각요소간 띄어쓰기, 곱하기는 \*)

$# //특별변수, 스크립트에 전달된 명령줄 인자 갯수

<gcc컴파일러 명령어>

sudo apt install build-essential //설치: gcc (ld링커포함)

gcc -c *.c //소스코드를 목적파일(.o)로 변환

gcc *.c -lm //라이브러리math

gcc *.c -lm -v //gcc 동작 옵션 자세히 보기 ...컴파일러가 링킹 자동으로 처리하는 것 확인 가능(그럼에도 불구하고 수동링킹 for점진적빌드)

ld *.o //라이브러리 사용시 lib 부분 떼고 -l 붙여서 사용

ld *.o /usr/lib/x86_64-linux-gnu/crt1.o -lm -lc -dynamic-linker=/lib64/ld-linux-x86-64.so.2 //다이나믹링커 설정

ㄴ/lib64/ld-linux-x86-64.so.2 //일반적인 GNU C라이브러리의 다이나믹링커(LD) 위치

ㄴ/usr/lib/x86_64-linux-gnu/crt1.o //프로그램 시작시 초기화 코드를 포함하는 오브젝트파일(엔트리포인트설정), main함수제어전 필요환경구축

/usr/lib,/usr/lib/x86_64-linux-gnu //라이브러리기본위치

libm //수학 math.h

libz //압축 zlib.h

libpthread //스레드 pthread.h

libstdc++ //C++ 기본라이브러리

ldd <실행파일 또는 라이브러리> //의존성있는 라이브러리를 보여줌

<Makefile변수>

<변수이름> := <값> //변수에 값을 할당 (=는 변수의 최종값, :=현재값)

<변수이름> += <값> //변수에 값을 추가

<변수이름> ?= <값> //변수가 선언되지않았다면 값할당(기본값 주기 좋음)

<변수이름> : <값> //변수 사용시

$@ //현재타겟이름

$< //의존성각각하나

$^ //의존성전체

<환경 및 툴체인준비 git..Rootfs..kernel..QEMU>

sudo apt-get install gparted //설치:용량관리프로그램

sudo apt-get install git //설치:깃

git clone git://git.vuildroot.net/buildroot //설치:빌드루트

cd buildroot

ls configs

make qemu_aarch64_virt_defconfig

sudo apt-get install libncurses-dev

make menuconfig

system configuration > init system > systemd

kernel > 이따를 위해 비활성황

target packages > text editors and viewers > vim

target packages > libraries > crypto > openssl support + openssl binary

filesystem images > exact size (128M)

host utilities > 체크전부해제

cat /proc/cpuinfo | grep processor | wc -l //또는 nproc --all

make -j8 //확인한 cpu갯수만큼

rootfs.ext2 생성되면 성공

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git //설치:리눅스커널

sudo apt-get install bison flex libelf-dev libssl-dev //설치:라이브러리

cp ~/buildroot/board/qemu/aarch64-virt/linux.config ~/linux/arch/arm64/configs/qemu_defconfig

~/linux$ ARCH=arm64 make qemu_defconfig //QEMU위한 arm64아키텍쳐 커널 빌드 명령

developer.arm.com/tools and software/GNU Toolchain > download (A휴대폰 Embedded소형기기) > gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz //설치:A-profile

~/linux$ ARCH=arm64 CROSS_COMPILE=/home/milkywaygod2/gcc폴더/bin/aarch64-none-linux-gnu- make -j8 //~~ ~~=<절대경로> make -j코어갯수

sudo apt install qemu-system-arm //설치:에뮬

<qemu실행>

qemu-system-aarch64 \ //가상화실행

초기로그인root

uname -a //현재버전확인

kill -9 qemu-system-aarch64

shutdown -h now //종료