OS/LINUX

[Tips] 리눅스 필수 툴

투칼론 2016. 7. 12. 15:00
반응형

리눅스 환경에서 프로그램을 개발 시에 알아두면 좋은 툴은 많지만, 경험상 반드시 알아두면 도움이 많이 되는 명령어/유틸리티/툴을 나열해 봅니다.



편집기/개발툴


 vi / vim

 리눅스에서 가장 자주 사용되는 편집기 

 vim은 플러그인을 통해 확장된 기능 사용 가능. 

 emacs 

 미국 MIT 대학에서 제작된 범용 텍스트 편집기

 이클립스

 JAVA 기반으로 개발된 GUI 툴. JAVA 개발자들이 가장 많이 사용 

 gedit

 GNOME 환경에서 기본 편집기

 KDevelop

 KDE 환경의 통합 개발툴

 anjuta

 GNOME 환경의 통합 개발툴 



개발 시 도움되는 툴


 ctags

 리눅스에서 가장 자주 사용되는 편집기 

 vim은 플러그인을 통해 확장된 기능 사용 가능.

 [추가설명] http://blueyikim.tistory.com/668

 cscope

 ctags만으로도 커널 소스 등 소스를 분석할 수 있는데, 지역변수/전역변수가 사용된 곳이나, 함수가 사용된 곳을 찾기 힘들어, 2% 아쉬운 부분을 채워준다

 screen

 여러 가상 터미털을 생성해줌

 man

 매뉴얼 페이지 보여줌 

 diff / vimdiff 

 두 개의 파일을 비교. 다른 유사한 툴로는 meld, xxdif 등이 있음



컴파일 / 빌드 툴


 gcc

 C 컴파일러

 g++

 C++ 컴파일러

 make

 룰 작성을 통한 배치 빌드 툴

 ar

 오브제트 파일을 아카이빙하여 라이브러리화(.a 파일)하는 툴 



디버깅 / 프로파일링 툴


 gdb

 디버깅 툴 (가장 많이 사용됨)

 gprof

 함수 사용 빈도, 수행 시간 등 프로파일링 툴 

 DDD

 Data Display Debugger, GUI 기반 디버깅 툴

 Nemiver

 DDD보다 강화된 GUI 기반 디버깅 툴 
 strace 시스템 콜을 추적하는 툴
 ltrace 라이브러리 함수를 추적하는 툴

 ldd

 Shared Library의 의존관계를 보여주는 툴
 splint

 C 소스코드를 분석하여 오류나 보안상 취약점 분석

 valgrind

 메모리 leak 분석

 gprof

 소스 프로파일링 툴 

 perf

 리눅스 커널에 포함된 "user-level" 도구로써, 시스템 성능 측정

 SystemTap(stap) 실행 중인 리눅스 커널 기반 운영 체제들을 동적으로 인스트루먼팅하기 위한 스크립트 언어이자 툴


기타 바이너리 관련 툴


addr2line : 디버깅 정보를 통해 실행파일의 행번호를 출력

nm : ELF 포맷의 심볼테이블 보기

objcopy : 사진, 동영상 등과 같은 큰 파일을 오브젝트 파일로 변환해주는 툴

objdump : 오브젝트 파일을 덤프하는 툴

size : 실행파일의 data, text, bss 등 크기를 보여주는 명령어

strings : 바이너리 파일로 부터 텍스트(심볼 등)를 추출하여 보여주는 명령어

strip : 실행파일에서 불필요한 정보를 제거하고 가볍게 만들어주는 명령어



빌드 / 패키지 툴


autotools : autoconf, automake, libtool 도구들로 구성된 빌드 툴. 참고로 아파치 등 소프트웨어 설치 시에 이 툴을 통해 설치 함

rpm : 레드햇 계열 리눅스 패키지 관리(설치, 업데이트, 제거 등)에 사용되는 툴

apt-get : 데비안 계열 리눅스 패키지 관리에 사용되는 툴



프로젝트 소스 버전 관리


svn(Subversion) : 소스 버전 관리 툴 

cvs(Concurrent versions) :  소스 버전 관리 툴

Git : 리눅스를 개발한 토발즈가 개발한 소스 버전 관리 툴. 최근 사용자 증가 추세






'OS > LINUX' 카테고리의 다른 글

[명령어] vmstat 설명  (3) 2016.08.20
[명령어] nc 또는 netcat  (0) 2016.07.27
[명령어] script 명령어  (1) 2016.07.01
[Tips] core 파일 생성법  (0) 2016.06.13
[명령어] 리눅스 모니터링 명령어/툴 요약  (0) 2016.04.15