인터넷에서 구한 소스 쓰려고 하는데 어떤 순서로 작업해야 할지 알고 싶습니다.

cabjaewon의 이미지

안녕하세요^^

검색 엔진을 공부하는 학생인데요..

인터넷에서 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]%

File attachments: 
첨부파일 크기
Plain text icon Makefile.txt132.76 KB
Image icon makefile코드.JPG75.71 KB
익명사용자의 이미지

Makefile 은 상당히 직관적인 구조입니다.
대충 보니 libzet_a_SOURCES 와 zet_SOURCES 에 적힌 파일들을 보시면 되겠네요.
zet 는 일종의 테스트 프로그램인 것 같고,
주요한 기능은 libzet.a 에 모은 것 같습니다.

익명사용자의 이미지

동문서답해서 죄송합니다.

"오프소스 수정하려면 뭐부터 시작해야 하죠?"
라는 질문에 대한 제 개인적인 답변이라면
"개발자의 의도를 먼저 파악하세요"
입니다. 소스등 포함되어 있는 문서를 반드시 읽어보세요.

뭐... 어쨌든 간에 게시판에 기초적인 질문을 올리는 것은 썩 좋은 시작이 아닙니다.
(하지만, 질문 글 자체는 아주 잘 작성 된 것 같습니다.

cabjaewon의 이미지

zet_SOURCES 에 나와있는 src/commandline.c 를 보니 main() 이 있네요..^^

질문을 드렸던 의도 자체가 main 을 찾아서 함수간의 호출 관계를 파악하려던 거였던 거니까...

동문서답은 아닌 것 같습니다..

함수간의 호출 관계를 알면... 거기서 필요한 부분만 제가 이용할 수 있을 것 같아서요...^^

그런데.. 현업에 종사하시는 분들께선 어떻게 하시는지 궁금합니다.

이렇게 Makefile 보는 것부터 시작하시는지...

그리고 main 함수가 있는 파일을 찾아내서 거기서부터 관련된 파일을 하나하나 다 열어보시는 건가요?

그게 정말 궁금합니다..

왠지 너무 무모해 보여서요... 파일이 그토록 많은데...

다른 소스를 이용해 작업할 때의 일반적 순서를 알고 싶습니다..

너무 기초적인 내용이라면... 죄송하네요...^^;;

하여튼 감사합니다.^^

익명사용자의 이미지

각종 tag 툴들이 있습니다.
vim 등 에디터에서도 편하게 찾아가실 수 있고요.

lxr 을 사용하면 편하긴한데 설치가 번잡해서 여간 큰 프로젝트가 아니면 배보다 배꼽이 더 큽니다.

이것 저것 다 귀찮다면 find 와 grep 만이 유일한 길입니다.

어찌됐건간에, 일단은 문서를 읽고 main() 부터 입니다.
라이브러리라면... API 문서가 따로 있을 테고, 대개 sample 또는 example 이 있습니다.

refill의 이미지

그냥 처음 보는 코드라면... 당연히 main부터 찾아들어가죠 (C의 경우엔)

다른 사람이 알려주는 거라면 필요한 부분만 알려달라고 합니다. ~~한 기능이 필요하다고.. 요청하면 되죠.

사는게 바람과 같고나..

바람과 같이

keizie의 이미지

-r로 디렉토리 안까지 살펴보고
-i로 대소문자 구분까지 없애면
안 나오는 게 없습니다. 거기서부터 시작하는 거죠.

cabjaewon의 이미지

댓글들 달아주셔서 감사합니다..^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.