투두 프로젝트를 컴파일하려고합니다 : https://github.com/meskio/tudu특정 문제가 발생했습니다 :
sched.h
파일, 표준 라이브러리에서 사용 된 것과 동일한 이름 :
libc6-dev:amd64: /usr/include/sched.h
. 문제는 다른표준 라이브러리 헤더가
sched.h
를 포함 시키려고한다는 것입니다.
라이브러리 파일 대신 로컬 파일을 사용합니다. 오류가 발생합니다. 파일 이름을 수정하지 않고이 상황을 복구하기 위해 컴파일러 (경로 또는 sth 포함)를 설정할 수 있습니까?
여기에는 문제가있는 포함 작업이 있습니다 :
In file included from ./data.h:28,
from ./sched.h:24, // <- pthread.h includes local file
// instead of /usr/include/sched.h
from /usr/include/pthread.h:23,
업데이트 : gcc 문서에 규칙을 포함하여 조금 멍청한 것을 발견했습니다.
By default, the preprocessor looks for header files included by the quote form of the directive #include "file" first relative to the directory of the current file, and then in a preconfigured list of standard system directories. For example, if /usr/include/sys/stat.h contains #include "types.h", GCC looks for types.h first in /usr/include/sys, then in its usual search path.
For the angle-bracket form #include , the preprocessor’s default behavior is to look only in the standard system directories. The exact search directory list depends on the target system, how GCC is configured, and where it is installed. You can find the default search directory list for your version of CPP by invoking it with the -v option. For example,
제 시스템에서 두 번째 규칙이 사실이 아닌 것 같습니다. 왜 그런지 궁금합니다. 일반적으로 시스템 디렉토리에서 헤더를 찾습니다. 그렇지 않으면
pthread.h
포함되지 않습니다. 그러나
shed.h
cpp가 시스템 포함 경로와 "포함 된 파일과 동일한 경로"보다 현재 로컬 디렉토리를 선호 함을 보여줍니다. 이상한 ...
- 답변 # 1
관련 자료
- graphql-kotlin을 사용하여 Spring Boot 서버에 CORS 헤더를 추가하는 방법은 무엇입니까?
- javascript - 컴포넌트의 React 라이브러리에서 국제화를 어떻게 처리해야합니까?
- 안드로이드에서 타사 라이브러리 종속성 버전 충돌 문제를 해결하는 방법?
- c++ - 사용자가 직접 지정하지 않으면 기본 헤더 파일이 포함 된 라이브러리를 작성할 수 있습니까?
- c++ - 변형으로 복잡한 헤더 재귀를 처리하고 사용하는 방법
- c - 재정의 오류를 일으키는 헤더 전용 라이브러리의 여러 포함
- build - 공유 라이브러리를 빌드 할 때 종속 라이브러리의 헤더 파일 만 필요합니까?
- c++ - 헤더 파일과 cpp 파일 모두에 라이브러리 포함
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- JavaScript 변수를 HTML div에 '출력'하는 방법
- python - 문자열에서 특정 문자 제거
문제가 내가
CPLUS_INCLUDE_PATH
를했다는 사실과 관련이 있음을 알 수있다 세트. 이 프로젝트의 문제는 해결되었지만 여전히이 이상한 행동을 이해하지 못합니다. 내CPLUS_INCLUDE_PATH
다른 관련없는 디렉토리를 가리키고 있으므로이 프로젝트에 영향을 미치지 않아야합니다 (추가 이름 충돌을 일으키지 않았습니다). CPLUS_INCLUDE_PATH가 비어 있거나 존재하지 않는 경우 모든 것이 올바르게 빌드됩니다.