programing

Linux에서 C 프로그래밍 언어의 헤더 파일을 찾으려면 어떻게 해야 하나요?

goodsources 2022. 8. 17. 23:59
반응형

Linux에서 C 프로그래밍 언어의 헤더 파일을 찾으려면 어떻게 해야 하나요?

Linux에서 C 프로그램을 작성하고 gcc를 사용하여 컴파일할 때 헤더 파일이 어디에 있는지 항상 궁금해요.를 들어, 여기서 '먹다'는요.stdio.h 일반적으로는,서 는, 「 」입니다.stdbool.h

내가 알고 싶은 것은 그것이 어디에 있는지뿐만 아니라 셸 명령이나 C 프로그래밍 언어 등을 사용하여 그러한 장소를 얻는 방법도 알고 싶다.

gcc -H ...정규 컴파일의 부작용으로 모든 포함 파일의 전체 경로를 인쇄합니다.-fsyntax-only또, 출력은 생성되지 않습니다(프로그램에 에러가 있는지 아닌지는 계속 알 수 있습니다).Linux, (Linux, gcc-4.7):

$ cat > test.c
#include <stdbool.h>
#include <stdio.h>
^D
$ gcc -H -fsyntax-only test.c
. /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stdbool.h
. /usr/include/stdio.h
.. /usr/include/features.h
... /usr/include/x86_64-linux-gnu/bits/predefs.h
... /usr/include/x86_64-linux-gnu/sys/cdefs.h
.... /usr/include/x86_64-linux-gnu/bits/wordsize.h
... /usr/include/x86_64-linux-gnu/gnu/stubs.h
.... /usr/include/x86_64-linux-gnu/bits/wordsize.h
.... /usr/include/x86_64-linux-gnu/gnu/stubs-64.h
.. /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h
.. /usr/include/x86_64-linux-gnu/bits/types.h
... /usr/include/x86_64-linux-gnu/bits/wordsize.h
... /usr/include/x86_64-linux-gnu/bits/typesizes.h
.. /usr/include/libio.h
... /usr/include/_G_config.h
.... /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stddef.h
.... /usr/include/wchar.h
... /usr/lib/gcc/x86_64-linux-gnu/4.7/include/stdarg.h
.. /usr/include/x86_64-linux-gnu/bits/stdio_lim.h
.. /usr/include/x86_64-linux-gnu/bits/sys_errlist.h

은 얼마나 되어 있는지를 줍니다.#include empty.month.mpti.

gcc를 사용하면 다음과 같은 특정 파일을 확인할 수 있습니다.

echo '#include <stdbool.h>' | cpp -H -o /dev/null 2>&1 | head -n1

-H는 포함된 모든 파일을 재귀적으로 인쇄하도록 프리프로세서에 요구합니다. head -n1여기서 첫 번째 줄만 출력하고 이름 있는 헤더에 포함된 파일을 무시합니다(특히 stdbool.h는 무시하지 않습니다).

예를 들어, 내 컴퓨터에서는 위의 출력이 다음과 같습니다.

. /usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdbool.h
locate stdio.h

또는

mlocate stdio.h

locate하지 않은 합니다.

sudo updatedb

도 할 수 있습니다.gcc「」에 스캔 되는 디렉토리가 를 알 수 .gcc 자체 명령어:

gcc -print-search-dirs

전처리 중에는 모든 전처리 디렉티브가 실제 디렉티브로 대체됩니다.매크로 확장, 코드 코멘트 삭제, 헤더 파일 소스 코드 등...

'하다'를 할 수 있습니다.cppC 명령어 C PreProcessor " " 。

예를 들어 명령줄에 다음과 같습니다.

cpp Filename.c

에 전처리된 출력을 나타냅니다.

include 파일의 이름을 알고 있는 경우 find를 사용하는 방법이 있습니다.

cd /
find . -name "stdio.h"
find . -name "std*.h"

모든 전화번호부를 뒤지기 때문에 시간이 좀 걸릴 거예요.

vim을 사용하여 소스 파일을 열고 stdio.h에 저주를 붙입니다.일반 모드에서는 명령어 'gf'를 실행하면 vim이 stdio.h 파일을 열 수 있습니다.

'Ctr + g'는 vim에 stdio.h의 절대 경로를 표시합니다.

의 표준 는 에 됩니다./usr/includestdbool.h는 다른 곳에 저장되며 사용하는 컴파일러에 따라 달라집니다.를 들어g++는을 「」, 「g++」에 합니다./usr/include/c++/4.7.2/tr1/stdbool.h반면 clang은 그것을 에 저장합니다./usr/lib/clang/3.1/include/stdbool.h.

gcc -v포함 경로를 확인할 수 있습니다.은 include에 ./usr/include또는/usr/local/include라이브러리 설치에 따라 달라집니다.

일반적인 경로는 다음과 같습니다.

/usr/lib/gcc/$(ls /usr/lib/gcc/)/$(gcc - v 2 >&1 | tail - 1 | awk ' {print $3}' / stdbool . h

(Fedora 25에서) 찾을 때 whereis stdio를 사용했습니다.h" 저는 /usr/include/stdio.h, /usr/shar/man/man3/stdio, 3.gx에 있습니다.단, 파일을 찾을 때는 whereis 또는 where.

언급URL : https://stackoverflow.com/questions/13079650/how-can-i-find-the-header-files-of-the-c-programming-language-in-linux

반응형