Unix

sp2sp 컴파일 하기

ForceCore 2010. 10. 26. 13:43
sp2sp는 여러가지 회로 시뮬레이터들의 결과를 csv로 뽑을 수 있게 해주는 프로그램이다. gwave 라는 프로그램에 부속물로서 낑겨 있는데 gwave 자체는 꽤 오래되어서 새로운 시스템에서 컴파일하는데 애먹는다. 아예 패키지가 없는 배포판도 있음. (아치에는 없다. 데비안 계통엔 있음).

gwave2에도 sp2sp가 있나? 모르겠다. gwave2라는 프로그램도 존재하기는 함. 아... gwave의 소스코드를 받는다고 들어가보면 gwave2가 받아질 것이다 -_-;;

gwave2-20090213 기준인데...

sp2sp만 따로 컴파일 해보기로 결정했다. GUI가 없는 프로그램이니 의외로 쉽게 될것이라고 생각하고.

./configure --prefix=$HOME/usr

워낙 오래되어서 configure도 안 될 것임 -_-;; 하지만 다행히도 sp2sp에는 config.h에서 결정적인 역할을 하는 것이 하나도 없으므로... (코드를 확인한 결과).

spicefile 디렉토리에 들어가보면 sp2sp.c 가 있다!
glib 를 쓰기 때문에 컴파일에 필요한 명령어는
#!/bin/bash
gcc \
    `pkg-config --cflags --libs gtk+-2.0 gmodule-2.0` \
    spicestream.c \
    ss_hspice.c \
    ss_cazm.c \
    ss_spice3.c \
    ss_spice2.c \
    ss_nsout.c \
    sp2sp.c
이렇다. 라이브러리 의존성을 해결하기 위헤서 pkg-config 가 들어간다. 나머지 c 소스코드 파일들은 undefined reference to... 에러가 나올때 마다 그게 어느 파일에 들어있는지 조사하면서 찾은 녀석들이다.

또한 config.h파일이 없다고 에러가 뜰 것이다. configure를 해야지 생기는 파일이 config.h인데 -_-;;; 에러가 뜨는 족족 해당 소스코드에서 config.h 를 #include하는 줄을 다 코멘트 처리해버린다. 어차피 config.h와 관련된 줄은 sp2sp.c에서 sprinf를 쓸지, snprinf를 쓸지 결정하는 곳에서만 쓰였다고 단언할 수 있다...

이상에서 설명한 대로 컴파일 하면 컴파일이 잘 되고 실행도 잘 될 것이다. 컴파일 되어 나온 a.out은 sp2sp로 이름을 바꾸어서 적절한 곳에 놓으면 된다. 필자는 $HOME/usr/bin 에 넣고 산다.