인터넷에서 구한 소스 쓰려고 하는데 어떤 순서로 작업해야 할지 알고 싶습니다.
안녕하세요^^
검색 엔진을 공부하는 학생인데요..
인터넷에서 Zettair 란 검색 엔진의 소스를 구했습니다.
원래 소스를 수정해서 제 프로그램 만드는데 사용하고 싶은데...
뭐부터 해야할지 막막하네요...^^;;
Unix/Linux 환경에서 C로 구현된 코드입니다.
명령 프롬프트> zet ~~
이런 식으로 프로그램을 수행시키는데...
저는 실행파일이 이름이 zet이니까 zet.c 란 파일이 어딘가에 있을거라 생각하고, zet.c 파일의 내용을 보고 어떤 함수를 어떻게 고치려고 했습니다. 그런데 zet.c 란 파일이 소스 코드가 들어있는 디렉토리에 없네요...
그래서 c 파일의 이름과 무관하게 실행파일의 이름을 zet으로 준 것인가 생각해서 Makefile 의 내용을 살펴봤습니다. 그랬더니 Makefile의 140번째 줄에서
bin_PROGRAMS= zet zet_trec zet_cat
이란 문구가 있더군요.. 이게 뭔가 의미를 가질 것 같은데... 잘 모르겠습니다..^^
zet_trec.c 나 zet_cat.c 파일을 찾아봤는데... 소스 디렉토리엔 없던데..
이것도 Makefile 내에서 찾아봐야 되려나요?
Makefile 첨부해 올려봅니다.. 여기 ^^;;;
아래는 Makefile 이 있는 디렉토리내에 존재하는 다른 파일들입니다.
[jaewon@dbserver:/export/home/jaewon]% ls
INSTALL README config.h.in configure.ac libzet.a txt
Makefile aclocal.m4 config.log depcomp missing zet
Makefile.am compile config.status doc mkinstalldirs zet_cat
Makefile.in config config.sub include src zet_diff
Makefile.mak config.guess configure install-sh tools zet_trec
[jaewon@dbserver:/export/home/jaewon]%
첨부 | 파일 크기 |
---|---|
Makefile.txt | 132.76 KB |
makefile코드.JPG | 75.71 KB |
Makefile 은 상당히
Makefile 은 상당히 직관적인 구조입니다.
대충 보니 libzet_a_SOURCES 와 zet_SOURCES 에 적힌 파일들을 보시면 되겠네요.
zet 는 일종의 테스트 프로그램인 것 같고,
주요한 기능은 libzet.a 에 모은 것 같습니다.
동문서답해서
동문서답해서 죄송합니다.
"오프소스 수정하려면 뭐부터 시작해야 하죠?"
라는 질문에 대한 제 개인적인 답변이라면
"개발자의 의도를 먼저 파악하세요"
입니다. 소스등 포함되어 있는 문서를 반드시 읽어보세요.
뭐... 어쨌든 간에 게시판에 기초적인 질문을 올리는 것은 썩 좋은 시작이 아닙니다.
(하지만, 질문 글 자체는 아주 잘 작성 된 것 같습니다.
동문서답은 아니었습니다..^^
zet_SOURCES 에 나와있는 src/commandline.c 를 보니 main() 이 있네요..^^
질문을 드렸던 의도 자체가 main 을 찾아서 함수간의 호출 관계를 파악하려던 거였던 거니까...
동문서답은 아닌 것 같습니다..
함수간의 호출 관계를 알면... 거기서 필요한 부분만 제가 이용할 수 있을 것 같아서요...^^
그런데.. 현업에 종사하시는 분들께선 어떻게 하시는지 궁금합니다.
이렇게 Makefile 보는 것부터 시작하시는지...
그리고 main 함수가 있는 파일을 찾아내서 거기서부터 관련된 파일을 하나하나 다 열어보시는 건가요?
그게 정말 궁금합니다..
왠지 너무 무모해 보여서요... 파일이 그토록 많은데...
다른 소스를 이용해 작업할 때의 일반적 순서를 알고 싶습니다..
너무 기초적인 내용이라면... 죄송하네요...^^;;
하여튼 감사합니다.^^
각종 tag 툴들이
각종 tag 툴들이 있습니다.
vim 등 에디터에서도 편하게 찾아가실 수 있고요.
lxr 을 사용하면 편하긴한데 설치가 번잡해서 여간 큰 프로젝트가 아니면 배보다 배꼽이 더 큽니다.
이것 저것 다 귀찮다면 find 와 grep 만이 유일한 길입니다.
어찌됐건간에, 일단은 문서를 읽고 main() 부터 입니다.
라이브러리라면... API 문서가 따로 있을 테고, 대개 sample 또는 example 이 있습니다.
다른 소스라..
그냥 처음 보는 코드라면... 당연히 main부터 찾아들어가죠 (C의 경우엔)
다른 사람이 알려주는 거라면 필요한 부분만 알려달라고 합니다. ~~한 기능이 필요하다고.. 요청하면 되죠.
사는게 바람과 같고나..
바람과 같이
grep이면 충분합니다.
-r로 디렉토리 안까지 살펴보고
-i로 대소문자 구분까지 없애면
안 나오는 게 없습니다. 거기서부터 시작하는 거죠.
답변 감사합니다..^^
댓글들 달아주셔서 감사합니다..^^
댓글 달기