레이블이 Unix인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Unix인 게시물을 표시합니다. 모든 게시물 표시

2010년 1월 13일 수요일

tab문자를 space 4칸으로 변경 하기

sed 's/\t/ /g' 파일명 > 새파일명

쉘스크립트로 맨드러서 대상 파일명만 입력 하면 바로 변경 되게

sed 's/\t/ /g' $1 > $1.tmp
mv $1.tmp $1

2009년 6월 26일 금요일

.svn 디렉토리들을 제거 하기...

svn으로 관리되는 소스에는 .svn 디렉토리 들이 매 디렉토리 마다 있다.
일단 svn에서 관리 하지 않고 단지 소스를 복사 해서 본다고 하면.
보이지 않는 이 디렉토리들을 제거 하고 싶을 때가 있다.

find . -name .svn -print0 | xargs -0 rm -rf

간단하게 모두 제거 하자....

2009년 2월 18일 수요일

UNIX OS별 공유 라이브러리 지정

공유 라이브러리 경로 지정

dlopen() 호출시 라이브러리 파일을 못찾는 에러 때문에 고생 할때....

http://kldp.org/node/58955

1) 공유라이브러리 경로지정을 위한 운영체제별 차이.
* 리눅스 : LD_LIBRARY_PATH
* 솔라리스 : LD_LIBRARY_PATH , LD_LIBRARY_PATH_64
* HPUX : SHLIB_PATH, LD_LIBRARY_PATH
* Tru64 : LD_LIBRARY_PATH
* AiX : LIBPATH
* SGI : LD_LIBRARY_PATH, LD_LIBRARYN32_PATH, LD_LIBRARY64_PATH
* Win32 : PATH
* MacOS X : DYLD_LIBRARY_PATH, DYLD_FALLBACK_LIBRARY_PATH
* VMS :SYS$SHARE
* OS390 : LIBPATH

2009년 1월 7일 수요일

gdb 에서 어셈블리 코드로 보기

(gdb) disassemble function name

이렇게 하면 어셈블리 코드 로 나온다.

mutex_lock() 함수 속에 MEMORY BARRIER이 있는가를 HP 장비에서 찾아 보려고..

libpthread.so 파일에서 찾아 보기위해서는

objdump -D libpthread.so > o

이렇게 어셈블로 떠서 볼수도 있다.

2008년 12월 18일 목요일

ld: Unsatisfied symbol "sem_unlink" 에러를 만났을때..

sem_unlink라는 심볼이 거시기 하다는 링크 에러 메세지..

nm -A /usr/lib/* 2>/dev/null | grep sem_open

이렇게 하면 sem_unlink가 있는 라이브러리를 쭉.... 보여 준다...

/usr/lib/libc.0:__ksem_open| 1229272|extern|entry |
/usr/lib/libc.0:__ksem_open| 1229312|extern|code |$CODE$
/usr/lib/libc.0:_sem_open| 1258936|extern|entry |
/usr/lib/libc.0:_sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc.0:sem_open| 1258960|extern|entry |
/usr/lib/libc.0:sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc.1:__ksem_open| 1229272|extern|entry |
/usr/lib/libc.1:__ksem_open| 1229312|extern|code |$CODE$
/usr/lib/libc.1:_sem_open| 1258936|extern|entry |
/usr/lib/libc.1:_sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc.1:sem_open| 1258960|extern|entry |
/usr/lib/libc.1:sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc_r.sl:__ksem_open| 1229272|extern|entry |
/usr/lib/libc_r.sl:__ksem_open| 1229312|extern|code |$CODE$
/usr/lib/libc_r.sl:_sem_open| 1258936|extern|entry |
/usr/lib/libc_r.sl:_sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc_r.sl:sem_open| 1258960|extern|entry |
/usr/lib/libc_r.sl:sem_open| 1258984|extern|code |$CODE$
/usr/lib/librt.2:__ksem_open| 14288|extern|code |$CODE$
/usr/lib/librt.2:sem_open| 10432|extern|entry |
/usr/lib/librt.2:sem_open| 10504|extern|code |$CODE$
/usr/lib/librt.sl:__ksem_open| 14288|extern|code |$CODE$
/usr/lib/librt.sl:sem_open| 10432|extern|entry |
/usr/lib/librt.sl:sem_open| 10504|extern|code |$CODE$


그럼 링크에서 -lrt를 추가 해줘야 링크가 되겠다...

2008년 11월 13일 목요일

gdb 에서 Couldn't fetch registers from core file: File in wrong format 메세지

HP 장비에서 core 파일로 디버깅 할려고 하는데...

Couldn't fetch registers from core file: File in wrong format

Unable to find 'load_info' symbol

이런 메세지가 나왓다.

구글링 결과..
http://archives.devshed.com/forums/unix-106/hpux-devtools-can-t-work-with-a-core-file-2268762.html

요약 하자면..

ulimit -c
에서 코아 파일 사이즈가 제한

또는 파일시스템에 제한으로

코아 파일이 생기다 만것이다.

어쩐지 딱 2GB 짜리...

메모리 사용이 엄청 큰 어플리케이션이 죽엇을 경우...

이럴수도 있구나...!!

2008년 7월 28일 월요일

grep 에서 사용되는 정규표현식 메타캐릭터

^ 행의 시작 지시자
$ 행의 끝 지시자
. 하나의 문자
* 선행 문자의 임의 개수
.* 하나이상의 문자와 대응되는 메타캐릭터
[-] 범위에 속하는 하나의 문자
[^ab] 목록에 있는 문자를 제외한 하나의 문자

메타캐릭터

와일드카드 메타캐릭터
- 일치하는 파일 이름으로 전개되는 패턴에 사용할 수 있는 메타캐릭터
* - 0개 이상의 문자와 대응
? - 하나의 문자와 대응
[abc] - 대괄호 사이에 있는 문자 중 하나의 문자와 대응
[!az] - 나열된 문자를 제외한 하나의 문자와 대응
[a-z] - 목록의 범위 내에 있는 문자 중 하나와 대응

문자 대응 클래스
[[:upper:]] - 모든 대문자와 대응: A, B, C,...Z
[[:lower:]] - 모든 소문자와 대응: a, b, c, ...z
[[:digit:]] - 숫자와 대응: 0, 1, 2, ...9
[[:space:]] - 공백, 탭 등과 대응

2008년 6월 4일 수요일

디렉토리 토글 cd -

pushd
popd
이런 명령으로 디렉토리를 왓다 갔다 한다고 한다.
난 몰랐다.
cd ../../../
이렇게 나왔닥 다시 cd xxx/yyy/zzz/
이렇게 들어갔다 나왔다..
근데...
cd -
이런 방금 전 디렉토리로..
다시 cd -
그럼 다시 원래 위치로..

이렇게 알면 편한게 있다니...

2008년 6월 1일 일요일

makereview

개발 프로젝트 소스중에 현재 수정된것은 tkdiff로 추가로 만드러진 파일은 emacs로
하기 위한 스크립트

function makereview()
{
svn st -q >o
awk '{ if ($1 == "M") {print "tkdiff "$2;} else {print "emacs "$2} }' o > review
. review
}

먼전 svn st -q > o 에 의해 변경된 파일은 M 파일명 추가된 건 A 파일명 이렇게 두개의 열로
결과 파일이 o로 저장된다.
이걸 awk로 M을 tkdiff로 나머지를 emacs로 변경 한다음
그파일을 review로 저장 하고 실행하게 하는 스크립트다.

2008년 5월 23일 금요일

ia64-hpux 에서 gcc 컴파일시 64bit 옵션

컴파일 옵션 -mlp64
링크 옵션 -mlp64
이걸 하지 않으면 기본적으로 32bit컴파일이 진행 된다.
make에서 CCFLAG, CFLAG , LDFLAG 같은것에 추가해야 한다.
컴파일에만 옵션을 주면 링크에서 에러가 발생 한다.

32bit 오브젝트 인지 64bit Object인지 확인

#file -h *.o
file 명령으로 확인이 가능하다.
64비트 컴파일 하고 링크 과정에서 링크 할수 없다는 메세지 때문에. 고생했다.