gcc는 C 및 C++ 헤더파일을 어디에서 검색합니까?
Unix 시스템에서는 gcc는 헤더파일을 어디에서 검색합니까?
오늘 아침에 시스템 헤더 파일을 찾느라 시간이 좀 걸렸기 때문에 여기에 있는 것이 좋을 것 같습니다.
`gcc -print-prog-name=cc1plus` -v
이 명령어는 사용 중인 C++ 프리프로세서를 gcc에 문의하여 검색되는 프리프로세서에 포함 여부를 묻습니다.
특정 설정에 대한 신뢰할 수 있는 답변을 얻을 수 있습니다.
마찬가지로 C 프리프로세서의 경우:
`gcc -print-prog-name=cpp` -v
는 ,, gcc ,, 음음 the 음 the the the the the the the the 뒤에 지정된 합니다.-I
★★★★★★ 。
컴파일러가 헤더 파일을 검색하는 경로 세트는 다음 명령으로 확인할 수 있습니다.-
cpp - v
#include " 라고 선언하면 컴파일러는 먼저 소스 파일의 현재 디렉토리를 검색하고 발견되지 않으면 위의 검색된 디렉토리를 계속 검색합니다.
#include <> 라고 선언하면 컴파일러는 위의 명령에서 얻은 디렉토리를 직접 검색합니다.
출처 : http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art026
가짜 시스템 헤더를 포함하려고 하는 파일을 작성할 수 있습니다.이러한 소스에서 상세 모드로 gcc를 실행하면 가짜 헤더를 검색할 때 모든 시스템 포함 위치가 나열됩니다.
$ echo "#include <bogus.h>" > t.c; gcc -v t.c; rm t.c
[..]
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include
/usr/include
/System/Library/Frameworks (framework directory)
/Library/Frameworks (framework directory)
End of search list.
[..]
t.c:1:32: error: bogus.h: No such file or directory
g++ -print-search-dirs
gcc -print-search-dirs
시스템 헤더를 검색하는 디렉토리 세트 전체를 인쇄하려면 , 다음과 같이 기동합니다.
$ LC_ALL=C gcc -v -E -xc - < /dev/null 2>&1 |
LC_ALL=C sed -ne '/starts here/,/End of/p'
그 형태에 대한 결과물을 만들어 낼 것이다.
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/5/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
「 」가 -I
.-명 、 - 、 명 、 - 、 on - - on on 。
(the)sed
명령어는 이 호출에 의해 출력되는 다른 모든 쓰레기를 제거하는 것입니다.LC_ALL=C
「 」, 「 」를 하기 위해서입니다.sed
명령어 작업 -- "Starts here" 및 "End of Search list" 문구는 변환된 IIRC입니다.)
GCC 매뉴얼의 CPP 섹션에는 헤더파일이 다음 디렉토리에 있는 경우가 있습니다.
GCC는 헤더를 여러 곳에서 검색합니다.일반 Unix 시스템에서는 별도로 지시하지 않으면 #include in으로 요청된 헤더를 검색합니다.
/usr/local/include
libdir/gcc/target/version/include
/usr/target/include
/usr/include
C++ 프로그램의 경우 먼저 /usr/include/g++-v3도 검색합니다.
이것들은 gcc가 지정된 헤더파일에 대해 디폴트로 검색하는 디렉토리입니다(헤더파일은 쉐브론<>; 1. /usr/local/include/ --- 서드파티제 헤더파일에 사용됩니다.2 . /usr / include / -- -- header header header for for used files files files usr / include / include / 。
위의 디렉토리 이외의 장소에 커스텀헤더 파일을 배치하는 경우는, 다음과 같이 포함할 수 있습니다.1 . using quotes ( . / custom _ header _ files / foo ) 。h")는 포함문의 쉐브론 대신 파일 경로를 포함합니다. 2. 코드를 컴파일할 때 -I 스위치를 사용합니다.gcc - I / home / user / custom _ headers / - c foo . c - p foo . o기본적으로 -I 스위치는 컴파일러에 (표준 디렉토리를 체크하기 전에) -I 스위치로 지정된 디렉토리를 참조하도록 지시합니다.I 스위치를 사용하는 경우 헤더 파일은 쉐브론을 사용하여 포함할 수 있습니다.
다음을 체크함으로써 C 프로그램의 (추가) 포함 경로를 bash에서 볼 수 있습니다.
echo $C_INCLUDE_PATH
이 값이 비어 있는 경우 다음과 같이 기본 포함 위치를 추가하도록 수정할 수 있습니다.
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/include
언급URL : https://stackoverflow.com/questions/344317/where-does-gcc-look-for-c-and-c-header-files
'programing' 카테고리의 다른 글
collections.defaultdict는 어떻게 작동합니까? (0) | 2022.12.01 |
---|---|
컴포넌트가 재렌더되는 원인을 특정하는 방법 (0) | 2022.12.01 |
범주가 비어 있는 경우 SQL에서 범주 삭제 (0) | 2022.12.01 |
TextView가 1줄보다 클 경우 생략기호를 표시하려면 어떻게 해야 합니까? (0) | 2022.12.01 |
Vuetify 조건부 다크 테마 (0) | 2022.12.01 |