어디에 포함한 파일을 저장-우분투 리눅스 GCC
문제
그래서,우리가 할 때 다음과 같다:
#include <stdio.h>
대
#include "myFile.h"
컴파일러,GCC 내 경우에는,어디로 알고 있는 stdio.서(심지어는 개체 파일)에 있는 내 하드 드라이브입니다.그것은 단지가 파일이 없는 상호 작용입니다.
나 생각 는 우분투 리눅스 기계는 파일에 저장 /usr/include/
. 어떻게 컴파일러는 이러한 파일이 있는가? 이 구성이 예상되는 기본?는 것이라 나는 이에 대한 구성입니까?
이후 나는 질문에 포함한 파일이 무엇인지,의 소스 파일이 있는가?내가 이것을 알 수 있습 퍼지에서 리눅스 커뮤니티 하지만 사람을 관리하십니까?하고 동일하게 관리하는 파일은 윈도우 컴파일러입니다.
난 항상 느낌의 밑에 그들이 올 와 컴파일러는 가정...
해결책
는 여기를 참조하십시오: 검색 경로를
요약:
#include <stdio.h>
면 포함한 파일에서는 브래킷 전처리기는 처음 검색을 지정된 경로를 통해 -I 플래그입니다.그런 다음 그것을 검색 기준을 포함 경로를(위의 링크 사용 -v 깃발을 테스트하는 시스템에서).
#include "myFile.h"
경우를 포함한 파일에 따옴표는 전처리기는 처음 검색을 현재 디렉터리에서 그런 다음에서 지정한 경로 -iquote, 다음 -I 경로,다음 표준다.
-nostdinc 하지 않도록 방지하는 데 사용할 수 있는 전처리기에서 검색 표 경로에 모두.
환경변수 또한 사용할 수 있습니다 추가 검색 경로입니다.
컴파일할 때 사용하는 경우 -v 깃발을 볼 수 있습 검색 경로를 사용됩니다.
다른 팁
gcc 는 풍부하고 복잡한"조정하"프로그램 호출하는 많은 다른 프로그램이 그 직무를 수행하기 위하여.특정 목적의 보 #include "goo"
고 #include <zap>
이 검색 시스템에,나는 추천합니다:
$ touch a.c
$ gcc -v -E a.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.
# 1 "a.c"
방법 중 하나로 이 검색에 대한 목록에 포함한 파일을 포함하여(는 경우)에는 디렉토리 #include "..."
보이는 것만 #include <...>
하지 않습니다.이는 특정 목록 나를 보여주는 실제로 Mac OS X(aka 다윈)명령에 내가 추천하여 검색 목록(뿐만 아니라 재미있는 구성 정보에는 나는 대체 ...
여기;-)에서 어떤 시스템에서는 gcc 을 실행하지 못하게 도와줍니다.
칼 대답하신 검색-경로 질문,하지만 지금까지는"의 소스 파일에 간다",하나는 것을 알고 있어야를 설치하는 경우 libfoo
패키지 할 일부 개발과 그것은(즉,사용하는 헤더),당신은 또한 필요를 설치 libfoo-dev
.표준 라이브러리는 헤더 파일은 이미 /usr/include
, 으로,당신이 보았습니다.
일부 라이브러리에 많은 헤더가 설치를 하위 디렉터리,예를 들어, /usr/include/openssl
.포함하는 그 중 하나,그냥 경로를 제공하지 않고 /usr/include
부분이,예를 들어:
#include <openssl/aes.h>
이 \#include
파일에 저장되는 gcc /usr/include
.표준에 포함한 파일의 g++에 저장됩 /usr/include/c++
.