문제

그래서,우리가 할 때 다음과 같다:

#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++.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top