프로그래밍 할때 잘쓰는 시스템 명령어들
출처 :: 열씨미와 게을러의 리눅스 개발 노하우 탐험기
회사에서 쓰는것은 HPUX 라 책에 있는거 그대로는 안되는것들이 꽤 있어서 몇몇개는 제외함
으쨌든 리눅스 쓰면서 사용할수도 있기에 메모!!
*. grep
-n 파일내부 번호
-H 파일명
-R 재귀적탐색
-I 이진파일 건너뛰기
-w 전체단어 일치
$ find . -name "*.[ch]" -exec grep -Hn foobar {} \;
foobar.h: 5:void foobar (int arg );
*. ctags
-. 태그파일 생성
$ ctags *.[ch]
-. 태그파일 사용
vi -t myfunc
:tag myfunc
myprog.c 내부의 main을 찾을때
vi -t Mmyprog
:tag Mmyprog
-. 단축키
{ 찾고자 하는 함수가 있는 행에서 } Ctrl+] /* 함수 선언한곳으로 이동 */
Ctrl+T /* 직전위치로 복귀 */
-. 태그스택검사
:tags
-.여러프로젝트에서의 tag 파일 위치 지정
:set tags=./tags,tags,/home/user/lazyness/commontags
.vimrc 에 포함하여 사용
-. 도움말
:help tags
*. cscope /* 함수호출 목록 찾기 */
*. GNU global /* gtags 명령 범용 태깅프로그램 */
*. strace - write STREAMS event trace messages to standard output
*. ldd_ia: ldd - list dynamic dependencies of executable files or shared
libraries on Integrity systems
ldd 의존성확인 유틸리티- 호스트 플랫폼에서 실행가능한 것만 가능 ( 교차컴파일은 찾지 못함 )
$ ldd /bin/ls
*. file - determine file type 파일정보 표시, 실행플랫폼정보 알려줌
*. strings - find the printable strings in an object or other binary file
- obj, bin 내부의 텍스트 파일을 보여줌
*. nm - print name list of common object file ( obj 파일에서 심볼 이름을 따냄 ) -
A (absolute)
B (bss symbol)
C (common symbol)
D (data symbol)
M (milli symbol) ELF only
N (notype) ELF only
R (section region)
S (tstorage symbol) SOM only
T (text symbol)
U (undefined)
*. ld_ia: ld - link editor for Integrity systems ( 링커- 라이브러리 생성시 이용 )
>> 참고 <<
HPUX 에서 라이브러리 생성 옵션
컴파일
INCL = foo.h
CFLAGS = -g -w +DSblended +DD64 -Bprotected_def \
-DSHARED_LIB -D__UNIX -D__NEW_HP_SYS \
-I$(INCL)
/user/bin/cc -c $(CFLAGS) -o foo.o foo.c
오브젝트 생성
ld +alloc_common -b foo.o -o libfoo_sl.sl
Linux 에서 라이브러리 생성 옵션
$ gcc -fPIC -c libhello.c
$ gcc - shared -W1,-soname,libhello.so.1 -o libhello.so.1.0.1 libhello.o -lc