GCC 기본 포함 디렉터리란?
gcc로 매우 간단한 소스 파일을 컴파일할 때 stdio나 stdlib 같은 파일을 포함하는 표준 경로를 지정할 필요가 없다.
GCC는 어떻게 이 파일들을 찾을 수 있을까?
그것은 이 모든 것을 가지고 있는가?/usr/include
내부에 유선 연결된 경로, 그렇지 않으면 다른 OS 구성 요소로부터 경로를 얻을 수 있는가?
에서 사용되는 기본 경로를 파악하기 위해gcc
/g++
우선 순위는 물론 다음 명령의 출력을 검사해야 한다.
- C의 경우:
gcc -xc -E -v -
- C++의 경우:
gcc -xc++ -E -v -
그 공적은 Qt Creator 팀에게 돌아간다.
출력이 더 짧은 명령이 있는데, 이 명령어를 사용하면 단일 공백으로 시작하여 자동으로 라인에서 포함 패치를 자를 수 있다.
$ echo | gcc -Wp,-v -x c++ - -fsyntax-only
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../x86_64-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2/x86_64-redhat-linux
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2/backward
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include
/usr/local/include
/usr/include
End of search list.
신용장은 lbc++ 1면에 들어간다.
비록 나는 C++와 심연을 고려한 이호르 카알리첸코의 대답에 동의한다.출력 압축성에 대한 7의 대답은 입력 처리가 명령줄 매개 변수와 매크로에 따라 달라지기 때문에 gcc의 다중 아치 버전에서는 여전히 불완전하다.
예:
echo | /opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-g++ -specs=nano.specs -mcpu=cortex-m4 -march=armv7e-m -mthumb -mfloat-abi=soft -x c++ -E -Wp,-v\ - -fsyntax-only
수확하다
⋮
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../arm-none-eabi/include/newlib-nano
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1/arm-none-eabi/thumb/v7e-m/nofp
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1/backward
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/include
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/include-fixed
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include
⋮
반면에echo | /opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-g++ -x c++ -E -Wp,-v - -fsyntax-only
수확하다
⋮
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1/arm-none-eabi
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1/backward
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/include
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/include-fixed
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include
⋮
이전의 호출은 다음을 활용한다.newlib
(출력의 라인 1과 3 참조), 후자는 다음을 포함한 표준에 따른다.목록 끝에 있는 공통 파일은 의 사용에 대한 예다.include_next
.
맨 아래 줄:포함 디렉터리를 인쇄할 때는 항상 모든 매크로 및 컴파일러 옵션을 고려하십시오.
기본 검색 경로를 나열하려면 다음을 실행하십시오.
$(gcc -print-prog-name=cc1) -v
다른 답변을 요약하려면:
C++의 경우:
c++ -xc++ /dev/null -E -Wp,-v 2>&1 | sed -n 's,^ ,,p'
C의 경우:
cc -xc /dev/null -E -Wp,-v 2>&1 | sed -n 's,^ ,,p'
참조URL: https://stackoverflow.com/questions/4980819/what-are-the-gcc-default-include-directories
'IT이야기' 카테고리의 다른 글
vue를 사용하여 테이블 행 필터링 (0) | 2022.04.29 |
---|---|
실시간 메시징 앱에서 상태 처리 (0) | 2022.04.28 |
Android에서 지연된 후 메소드를 호출하는 방법 (0) | 2022.04.28 |
HMAC-SHA1에 대한 목표-C 샘플 코드 (0) | 2022.04.28 |
Vuejs 2가 어레이에서 이동하는 항목, 어레이 인덱싱 유지 안 함 (0) | 2022.04.28 |