임베디드 Linux 개발 도구에는 다음이 포함됩니다. 1. vim 도구 vim은 vi에서 개발된 텍스트 편집기입니다. 프로그래밍을 용이하게 하는 코드 완성, 컴파일 및 오류 점프와 같은 기능이 있습니다. 2. 프로그래밍 언어로 개발된 gcc 컴파일러입니다. GNU에서 개발한 컴파일러 3. 프로젝트 관리자 make, make는 Linux 등의 자동 프로젝트 컴파일 관리자입니다.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.
임베디드 Linux 개발 도구란 무엇입니까?
내장 Linux 개발 도구
vim 사용
1. 텍스트 편집기: vim + vscode: vim 사용 및 구성, 플러그인 설치 및 사용 방법 배우기 + 원격 링크 vscode
2. 일반적으로 사용되는 컴파일 옵션, 정적 라이브러리 및 동적 라이브러리의 생성 및 사용
3. 디버거 gdb: 중단점 디버깅, 메모리 보기, 메모리 오류 디버깅
4. 프로젝트 관리자 make: Makfile 작성, 다중 디렉토리 Makefile 작성
5. 쉘 프로그래밍(C 언어 이후)
6. git 버전 관리 도구(온라인: C 언어)
7. Cmake(프로젝트)
8. 메모리 감지 도구(온라인: C 언어)
vi /vim/gvim: 텍스트 편집기 gedit emac(마우스 제외)
적용 가능한 시나리오: 단일 파일 편집, vim+플러그인(고도의 사용자 정의) >IDE
vim 모드: 명령줄 모드(처음 입력할 때 a를 누릅니다. ,i), 최종 모드, 삽입 모드(esc는 명령줄로 전환) wq 저장 및 종료
vim 구성(vimc):
/etc/vim/vimc 파일 수정(줄 번호, 들여쓰기 스타일, 마우스 지원)
vim /etc/vim/vimrc
플러그인 설치
Vim 명령 사용법:
명령줄: yy 복사 p 붙여넣기 dd 삭제 u 이전 줄 복원
맨 아래 줄: 찾기 /str ?str
바꾸기: line 숫자 또는 %s/old/new/gc
여러 파일 편집: vim 파일 1 파일 2 파일 3..
Jump: n 파일 이름
파일 저장 w r
sp + 파일 이름 다중 파일 쓰기
gcc 컴파일러
<> ""와 ""의 차이점: 검색 경로가 다릅니다. 전자는 시스템 헤더 파일 디렉터리 " /usr/include》검색, 그렇지 않으면 오류가 보고됩니다
후자는 현재 디렉터리에서 검색되고, 그렇지 않으면 시스템 헤더 파일 디렉터리에서 검색됩니다. , 오류가 보고됩니다
사양: <>시스템 헤더 파일 포함" "사용자 정의 헤더 파일 포함
#if 0 //注释 //#if 1//取消注释 #endif
프로세서마다 어셈블리가 다릅니다
시스템 내의 모든 헤더 파일은 vim/user/include/header 파일에 있습니다.
gcc 개요: GNU 프로젝트에서 제공하는 컴파일러(Unix cc 컴파일러) (컴파일 툴 체인 g++ ld ldfd) –> (크로스 컴파일 툴 체인)
크로스 컴파일이란 무엇인가요? .c->.s->.o->elf
대상 머신에서 실행하기 위해 호스트 머신에서 코드를 컴파일하는 과정
다른 CPU 플랫폼에서 실행하기 위해 현재 CPU 플랫폼에서 컴파일 코드 프로세스
a\源文件到可执行经历了哪几个步骤?(预处理,编译,汇编,链接) b\预处理的任务:头文件展开(#include)、宏替换(#define)、条件编译(#ifdef)(#开头的代码) c\编译的任务:检查语法。转成汇编、生成汇编文件(.s/.S) d\汇编的任务:编译汇编文件,生成目标文件(.o) e\链接的任务:链接所有目标文件,生成符号表,生成可执行文件
컴파일 옵션
-o(실행 파일 이름 변경: elf 형식?)
-E(컴파일러는 전처리만 수행)
-I: 헤더 파일 컴파일을 위한 타사 지정 경로
- S: 컴파일 단계로 진행
-c: 어셈블리 단계로 진행
-O1 -O2 -O3(컴파일 최적화): Baidu에서 수행된 작업 확인
-w(경고 해제) -Wall(경고 시) ): 경고 정보 전환
라이브러리 파일
컴파일러 gcc(정적 라이브러리 및 동적 라이브러리의 생성 및 사용)
디버거 gdb(공통 이름 지정, 호출 메모리 오류)
프로젝트 관리 메이커( makefile 쓰기, 다중 디렉토리 Makefile 쓰기)
extern: 이 함수는 다른 파일에 정의되어 있습니다.
라이브러리 함수: printf scanf strcpy strcat (라이브러리 파일에 저장됨)
라이브러리 파일: 함수 및 변수 저장, 함수 및 내부 변수는 사용할 수만 있고 구현은 볼 수 없습니다
라이브러리 파일 분류: 정적 라이브러리(.a) 및 동적 라이브러리(.so)
정적 라이브러리(.a): 저장된 함수 및 변수, 컴파일 단계에서 실행 파일
동적 라이브러리(.so): 저장된 함수와 변수, 실행 단계에서 실행 파일에 로드
정적 라이브러리와 동적 라이브러리 사용의 차이점(실행 파일의 차이점:)
정적 라이브러리를 사용하여 컴파일된 실행 파일>동적 라이브러리를 사용하여 컴파일된 실행 파일의 크기-메모리 오버헤드에 영향
정적 라이브러리를 사용하여 컴파일된 실행 파일의 실행 속도>동적 라이브러리를 사용하여 컴파일 실행 파일의 실행 속도는
정적 라이브러리로 컴파일된 실행 파일을 이용한 업그레이드
정적 라이브러리로 컴파일된 실행 파일 사용 프로그램 배포>동적 라이브러리 사용 라이브러리로 컴파일된 실행 파일 프로그램
라이브러리 파일의 저장 경로:
시스템 작동에 필요한 라이브러리 파일: /lib
타사 소프트웨어 및 도구 작동에 필요한 라이브러리: /usr/lib
컴파일러는 자동으로 이 두 디렉터리로 이동하여 연결해야 하는 라이브러리 파일을 찾습니다.
정적 라이브러리 만들기:
대상 소스 파일을 대상 파일로 컴파일: gcc -c 대상 소스 파일(여러 개일 수 있음) (gcc -c add.c)
ar 도구를 사용하여 정적으로 만듭니다: ar -rcs(create if 라이브러리가 존재하지 않음) , 존재하는 경우 업데이트) 생성할 라이브러리 파일 이름(lib+라이브러리 이름+접미사.a) 대상 파일
예: ar -rcs libadd.a add.o
정적 라이브러리 사용:
-l: 로드할 정적 라이브러리 지정 -l 라이브러리 이름
-L: 로드된 라이브러리 파일의 저장 경로 지정
gcc 소스 파일 -l 라이브러리 이름-L 라이브러리 저장 경로
예 : gcc deco.c -ladd -L./ libls
프로젝트 관리자 make
프로젝트란 무엇인가요?
여러 소스 파일 + 기타 파일(그림 + 헤더 파일 + 스크립트 파일)
프로젝트 관리자 작업: 여러 소스 파일 컴파일
gcc + 모든 소스 파일 -o 실행 파일 — >자동 컴파일
make는 Makefile 파일에 의존합니다.
Makefile 파일은 일종의 스크립트 파일(일괄 처리)이며 관련 구문이 있습니다.
Makefile 구문:
세 가지 요소: target, dependency , command
형식:
대상: 종속성
tab 명령
대상: 최종 생성된 파일
종속성: 대상을 생성하는 데 필요한 파일
명령: 대상을 생성할 때 실행해야 하는 명령
실행 order :
make: 기본적으로 첫 번째 Target Body에서 실행
make+ Target Body: 해당 Target Body에서 실행
Target Body가 의존하는 파일이 Target이라면 해당 Target은 종속성이 먼저 실행된 다음 대상 본문이 실행됩니다.
명령은 makefile을 빌드하거나 Makefile을 만들 수 있습니다. make -f Makefile -f 실행할 Makefile을 지정합니다.
Makefile:
참고: #
대상을 교체할 수 있습니다. by $@
다단계 디렉토리의 Makefile:
최상위 Makefile: 마스터 컨트롤 Makefile
하위 디렉토리 Makefile: 함수 Makefile
scripts 디렉터리 Makefile: 헤더 파일 Makefile
마스터 컨트롤 Make 파일: enter 각 기능 하위 디렉터리에서 make 명령을 실행하여 각 하위 디렉터리의 .o 파일을 실행 파일로 연결합니다.
Function Makefile: .c를 컴파일합니다.
헤더 파일 Makefile: 일부 변수 정의
관련 권장 사항: "Linux 비디오 튜토리얼"
위 내용은 임베디드 Linux 개발 도구란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!