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
전처리 중에는 모든 전처리 디렉티브가 실제 디렉티브로 대체됩니다.매크로 확장, 코드 코멘트 삭제, 헤더 파일 소스 코드 등...
'하다'를 할 수 있습니다.cpp
C 명령어 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/include
stdbool.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
'programing' 카테고리의 다른 글
$auth.get에 접속하는 방법서비스의 토큰('local')을 선택하십시오. (0) | 2022.08.17 |
---|---|
nuxt 사용 시 핫 새로고침을 끌 수 있습니까? (0) | 2022.08.17 |
element-ui(현재는 element-plus)를 Vue3 프로젝트에 추가하려면 어떻게 해야 합니까? (0) | 2022.08.17 |
Jackson JSON을 사용하여 JSON 문자열을 맵으로 변환하는 방법 (0) | 2022.08.17 |
계산된 속성에 예기치 않은 부작용이 있습니다. (0) | 2022.08.17 |