분류 전체보기 1159

C코드 파싱한 정보 분석

우연히 C코드의 AST는 어떻게 만들어 질까에 대해서 검색을 하다가 gcc의 파싱 정보를 보여주는 옵션을 발견하였다. [CODE type=C] int main() { int a=0; a++; return 0; } [/HTML][/CODE] #gcc -fdump-translation-unit hello.c 이 옵션을 주면 hello.c.tu 라는 파일이 생성되고 파싱된 정보를 기록합니다. 하지만 아직까지 파싱된 정보를 해석하는 방법은 잘 몰라요 ㅋㅋ 이외에 cpp 클래스를 분석하는 옵션도 있다. (hello.cpp가 있다고 가정할떄) #gcc -fdump-class-hierarchy hello.cpp 이옵션을 주면 hello.cpp.class라는 파일이 생성되고 클래스 상속관계를 보여준다. 이 놈도 아직 ..

Passion/Programming 2007.01.25

동적 라이브러리 만들기

동적 라이브러리 만들기는 정적 라이브러리 만들기와 매우 유사하다. 단지 컴파일 방법이 다르고, 내부 동작 메커니즘이 다를 뿐이다. 간단하게 hello, library world를 찍는 동적 라이브러리를 생성하고, 이를 사용하는 방법에 대해서 알아보도록 하겠다. 동적 라이브러리 파일 (libhello.c) [CODE type=C] /* shared library file */ #include void hello(void) { printf("Hello, library world\n"); } [/HTML][/CODE] 컴파일 하기 (Position Independet Code) # gcc -fPIC -o libhello.o -c libhello.c 공유라이브러리로 만들기 # gcc -shared -c libh..

Passion/Programming 2007.01.17

정적라이브러리

우리가 프로그램을 보면서 쉽게 접할 수 있는 xxxx.a 의 형식으로 된 파일을 말한다. 정적라이브러리는 단순히 오브젝트파일들의 묶음으로 보면 된다. 우리가 어떤 C파일을 오브젝트 코드(xxx.o)로 컴파일하고 나서 이런 오브젝트 파일들을 압축툴(ar)을 이용하여 하나의 정적라이브러리 파일로 생성하는 것이다. 이는 최근에는 많이 사용되지 않는 방법이지만, 라이브러리는 공개하고 소스는 공개하고 싶지않을 때 사용하는 방법이라고 보면 된다. 장점 : 정적 라이브러리는 사용자들이 프로그램을 다시 컴파일하지 않아도 링크시킬수 있도록 해주기 때문에, 컴파일 시간을 줄여준다. 정적 라이브러리를 만드는 방법 : ar rcs mylibrary.a file1.o file2.o 이 예제 명령은 오브젝트 파일 file1.o,..

Passion/Programming 2007.01.09

shell 에서의 리다이렉션 종류

셀에서 사용되는 리다이렉션의 대해서 알아보자. 0 : 입력 1 : 출력 2 : 에러 종류의미 출력방향을 바꾼다. >> 출력에 덧붙인다. 2> 에러의 방향을 바꾼다. &> 입력방향을 바꾼다. >& 입력방향을 바꾼다(권장). 1>&2 출력을 에러로 내보낸다. 2>&1 에러를 출력으로 내보낸다. >| 출력을 리다렉션할 때 noclobber설정을 무시힌다 filename 장치파일(/dev)이면, 표준출력,표준입력 등에 모두 사용된다.

Passion/Programming 2006.12.28

연금저축 가입하기

회사에서 5만원을 지원해주고 나머지는 내가 지출하여 연금저축에 가입하는 기회가 생겼다. 여러가지 연금저축을 알아보았는데 다들 비슷한 조건이고, 선택조건은 수익률이 어느정도 인가를 바탕으로 결정하기로 하였다. 그런데 어디서 자료를 찾아봐야 할지를 너무나 모르겠다. 중요한 점은 각 연금의 종류들이 수익률이 얼마인가를 일목요연하게 알면 좋을거 같다. 이 정보는 자산운용협회(www.amak.or.kr) 에서 "연금상품공시"를 자료를 바탕으로 구할 수 있었다.

Lifelog 2006.12.27

중고 자동차 구입기( 자동차 이전 )

회사 생활을 하면서 가장 큰 유혹이 자동차의 구입이다. 하지만 아직 결혼도 안하고 집도 장만하지 않은 사람이 자동차를 구입한다라는 건 순서가 맞지 않다. 우선 순위에서 밀린다. 그런데 중고차를 구입할 찬스가 생겼다. 형이 새차를 사면서 형차를 사기로 하였다. 그래서 차근차근 중고차 구입기를 적어보기로 하였다. 우선 중고차 매매를 하기 위한 준비단계부터 시작하였다. 1) 기초 자료 조사

Lifelog 2006.12.26

Lifelog 시작

새로운 발전은 항상 필요에 의해서 생기는 것같다. 블로그를 만들고 내 지식을 정리하면서, 항상 이 블로그는 어떤 내용으로 채울까를 고민하였다. 전문적인 지식을 저장하는 창고이며, 내 인생의 기록을 남기는 곳이 되어야 한다는 필요를 느끼게 되었다. 그래서 만든것이 Life + log (lifelog)이다. 라이프로그에서는 내 인생에서 필요한 내용들, 삶을 살아가면서 꼭 알아야 하는 것들을 기록할려고 한다. 회사생활을 시작하면서, 느꼈던 점들, 필요한 점들 하지만 다른 사람들도 잘 모르는 내용들을 기록함으로서 이 라이프로그를 통해서 사회 생활을 시작한는 사람들에게 도움이 되었으면 좋겠다.

Lifelog 2006.12.26

ftp 포트 이야기(20,21번)

ftp는 일반적으로 두개의 포트를 사용한다. 20,21 번 포트를 사용하는데 두개의 포트가 열리는 방법이 다르다. 처음 ftp 클라이언트가 21번을 통해서 ftp서버에 접속을 하면 제어와 관련된 세션이 열리게 된다, 다음으로 데이터를 전송하기 위해서 거꾸로 ftp서버에서 ftp client로 서버의 20번 포트를 사용하여 클라이언트에 접속하게 된다. 따라서 일반적으로 방화벽 설정이 서버로 들어오는 포트에 대해서 제어를 하고 나가는 포트에 대해서 제어를 하지 않기 때문에 21번 들어오는 포트만 설정하여도 ftp가 접속되게 된다.

Passion/Network 2006.12.19

cd를 DVD로 굽기

FreeBSD 는 전체 소스는 시디 두장에 들어있다. 하지만 나에게는 시디버너가 존재하지 않았다. 그대신 DVD writer는 있었다. 그래서 시디이미지 두장을 하나의 DVD 이미지로 만들어서 사용하면 좋을것이라고 생각하였다. 솔라리스를 보니까 DVD 이미지를 만드는데 그냥 copy 명령어를 사용하는 것을 보았다. 오호라 그냥 시험삼아 해봤는데 되는거 같다. copy /b 1.iso + 2.iso dest.iso 이렇게 명령을 하면 1.iso 2.iso 두개의 이미지를 하나의 dest.iso 이미지로 만들어 준다. 그럼 이 이미지를 DVD로 구워서 사용하니까 부팅 DVD로 사용할 수 있었다. 우하하.. 쪼아

R&D/OS 2006.12.10