문제를 해결하는 과정을 기억 단지 리눅스의 지식 봐.
문제는 회사의 서버 컴파일러의 코드가 아무 문제가 없다, 이것이다하고 자주 통과 느낌이 코드가 약간의 문제가, 내가 자신의 가상 머신에 빌드 환경을 설정하는 원 서버에 컴파일됩니다. 환경을 설정 한 후, 컴파일 된 기본 윈도우에 코드에서 가상 머신에 직접 장착을 통해 액세스하지만 컴파일.
문제는 그 코드는 Termios.h Termios.h의 termios.h이 포함이 헤더 파일을 포함, Termios.cpp라는 이름의 CPP가 같은 방식으로 간소화 할 수 있습니다. 나는 동일한 이름, 이전의 레거시 코드를 ~~~ 사용하는 이유 Termios.cpp 및 Termios.h 파일 시스템의 머리 termios.h 자신의 코드는 묻지 않습니다. 회사의 서버가 제대로 컴파일에 Termios.cpp에서 매크로의 정의를 찾을 수없는 가상 머신의 컴파일 시간 오류, 같은 B9600과 같은 같은 매크로를 사용할 수 있지만있다. termios.h은 다음 :( 검색 회사 서버와 가상 머신 비슷한 결과)
프로그램 참조 파일에서 찾은 파일을 열고 /usr/include/termios.h되는 분석은이 문서에서 비트 / termios.h, 즉 /usr/include/x86_64-linux-gnu/bits/termios.h를 포함 이 같은 B9600과 같은 매크로 정의 등. 문서 내부 가상 머신의 내용도, 왜 컴파일러 오류 그것? , /usr/include/termios.h하지 포함하는 가상 머신 내부의 첫 번째 점의 용의자는 "qztest는"이 프로그램은 헤더 파일에 # 오류를 추가하여이 헤더 파일을 포함하지 않는 인쇄 내용을 결정한다. termios.h 다른 디렉토리에 포함되어 있습니까? (내 문서를 참조 검색 경로 GCC 모양 가능성 경로 검색 https://blog.csdn.net/wuzhidefeng/article/details/76854655을 다른 디렉토리도 # 오류를 추가로),하지만 걱정하지 않습니다 "qztest"이러한 헤더가 포함되어 이러한 매크로를 찾을 수 없습니다. GCC 컴파일러는 헤더 파일을 찾을 수 없습니다 때 결국 참조 프로그램은 어디에서 첫 번째 문서는 것을?
유용한 명령은 g ++ -M 명령했다. g ++ -M Termios.cpp -I ../inc/ -I ../../globalinclude/ -std = C ++ 11 | GREP 별도로 최종 사용에서 그를 볼이 cpp에 대한에 대한 헤더 파일, 결과를 컴파일 TERMI 로 다음과 같습니다 :
결과는 그가 ../inc/termios.h 발견 만이 디렉토리 Termios.h로,이 문서가 termios.h 아를하지 않습니다 보여줍니다. 디렉토리에서 찾을 것이다 및 파일을 찾을 수 없습니다, 그것은 대소 문자 구분 gcc를 무엇입니까? 무리 아. Termios1.h에 Termios.h 사본을 시도하고 Termios1.h에 Termios.cpp에 포함 된 재사용은 g ++ -M 여전히 ../inc/termios.h 발견했다. termios.h는 # 오류를 추가하기 전에, 재 컴파일 이름 "qztest는"인쇄. Termios.h termios.h 자기가 포함 된 것처럼 보인다.
그런 다음 방법으로 설치하지 않는, 단순히 재 컴파일에 코드 내부의 전체 가상 머신을 복사, 오류가 성공적으로 컴파일하지 있습니다.
결론 : 우분투에서 윈도우 마운트 코드 액세스에서, gcc가 컴파일 시간은 오해의 소지가 대소 문자를 구별하지 않는다 (무료 뒤에 특정 뿌리 깊은 이유로 다음 바닥에 도착) 수
레슨 : 1, 파일 이름 지정하지, 파일 이름 등 만 경우에 같은 일이 아닌 시스템 파일과 이름이 중복 참여를 유도하기 위해 규제
2, 직접 크로스 플랫폼 액세스 파일을하지 않으려 고 그런 다음 액세스를 복사 할 수 있습니다