리눅스 환경에서 프로그램을 개발 시에 알아두면 좋은 툴은 많지만, 경험상 반드시 알아두면 도움이 많이 되는 명령어/유틸리티/툴을 나열해 봅니다.
편집기/개발툴
vi / vim |
리눅스에서 가장 자주 사용되는 편집기 vim은 플러그인을 통해 확장된 기능 사용 가능. |
emacs |
미국 MIT 대학에서 제작된 범용 텍스트 편집기 |
이클립스 |
JAVA 기반으로 개발된 GUI 툴. JAVA 개발자들이 가장 많이 사용 |
gedit |
GNOME 환경에서 기본 편집기 |
KDevelop |
KDE 환경의 통합 개발툴 |
anjuta | GNOME 환경의 통합 개발툴 |
개발 시 도움되는 툴
ctags | 리눅스에서 가장 자주 사용되는 편집기 vim은 플러그인을 통해 확장된 기능 사용 가능. |
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 |