2009-11-05 4 views
1

Linux에서 함수 이름을 검색 할 수있는 좋은 데이터베이스가 있으며 정의 된 헤더를 알려줍니다. 인터넷 검색은 항상 나를 위해 작동하지 않으며 항상 man 페이지가 아닙니다.Linux 함수가 정의 된 위치 찾기

답변

7

사용 맨

는 맨 페이지가 작동합니다.

man 2 read 
man 3 printf 

섹션 2는 시스템 호출 (커널에 직접 연결)을위한 섹션 3은 표준 C 라이브러리 호출을위한 섹션입니다. 일반적으로 섹션을 생략 할 수 있으며, 사람이 필요한 부분을 알아낼 수 있습니다.

시스템에서 개발 관련 맨 페이지를 얻으려면 추가 단계가 필요할 수 있습니다. 예를 들어, 데비안 시스템에서는 apt-get install manpages-dev glibc-doc을 사용해야했습니다.

사용하여 라이브러리의 특정 참조 비 기본 C 함수의

, 당신은 당신이 (예를 들어, GNOME 프로젝트 된 libstdC++에 대한 GNU's docs, Qt를위한 doc.qt.io, library.gnome.org처럼 사용하고있는 라이브러리의 문서를 확인해야합니다 GTK 등). 웹

linux.die.net를 사용

웹 페이지의 좋은 온라인 거울입니다.

LSB Navigator (이 답변에 설명 된대로) 멋진 것 같습니다. 나는 그것에 대해 몰랐다. 그렙

를 사용

때로는 /usr/include 직접 검색하는 바로 가장 쉬운 방법. grep이 작동하지만 ack이 훨씬 낫습니다.내가 getRootLogger이 들어있는 헤더를 찾기 위해 노력하고있어 예를 들어, :

cd /usr/include 
# Debian calls 'ack' ack-grep. Your system may differ. 
# Add \b before and after to only match a complete word. 
ack-grep '\bgetRootLogger\b' 

ACK는 일치 멋지게 포맷과 색상 화 목록을 반환합니다.

당신은 기능이를 마무리하고 쉽게 사용할 수 있도록 .bashrc 파일에 넣어 (또는 동급) 할 수 있습니다 : 당신의 남자의 명령을 모두 한 줄에 함께 실행되지 않도록

function findheaderfor() { 
    ack-grep \\b$1\\b /usr/include /usr/local/include 
} 
1

물론, Linux에서 "man"을 사용해 보셨습니까?

C 함수의 경우 "man 3"을 원할 수 있습니다.

2

매뉴얼 페이지를 사용해보십시오. 많이 사용합니다. 포함 할 파일을 얻습니다. 때때로 섹션 번호를 전달하려고합니다. 몇 가지 예를 들면 다음과 같다 :

man 2 socket 
man 2 accept 
man 3 fopen 
man sem_post 

2
3은 C 라이브러리 기능을위한 시스템 호출 관련 기능이다.

당신이 커널 함수 정의 나 커널 소스 탐색을 찾고 있다면, 섹션 번호가

을 필요하지 않은 모호함이없는 경우, 당신은 확실히 시도해야 lxr.linux.no

+0

이 서식을 수정 . –

+0

무엇이 내 대답에 잘못된 것인가? – shodanex

1

당신은 LSB Navigator (사용 검색 필드를 사용할 수 있습니다 오른쪽 상단 모서리에 있음). 그러나 헤더 정보를 찾을 수있는 대부분의 기능에는 맨 페이지가 있습니다. 기본 C 함수의