나는 최근에 Kubuntu 12.04에서 13.04로 업그레이드하여 완전히 다시 설치했습니다.
gcc 사용하기 4.7.3. /usr/include/sys
디렉토리 가 없다는 것을 발견하기 위해 일부 프로그램을 컴파일했습니다 . 즉, types.h
, stat.h
, 등, 결석. include/linux
디렉토리 에는 존재 하지만 존재 하지는 않습니다 include/sys
.
무슨 일이야?
나는 최근에 Kubuntu 12.04에서 13.04로 업그레이드하여 완전히 다시 설치했습니다.
gcc 사용하기 4.7.3. /usr/include/sys
디렉토리 가 없다는 것을 발견하기 위해 일부 프로그램을 컴파일했습니다 . 즉, types.h
, stat.h
, 등, 결석. include/linux
디렉토리 에는 존재 하지만 존재 하지는 않습니다 include/sys
.
무슨 일이야?
답변:
64 비트에서 Ubuntu를 사용하는 경우 (지금 32 비트 시스템에서 정확히 텍스트를 보낼 수는 없습니다) 질문의 디렉토리는 다음과 같습니다.
/usr/include/x86_64-linux-gnu/sys
이제이 정보 /usr/include/sys
를 가지고 터미널에서이 파일을 사용하여 해당 위치에 파일이 실제로 필요한 경우 해당 파일에 대한 심볼릭 링크를 만들 수 있습니다 .
sudo ln -s /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/sys/types.h
sudo ln -s /usr/include/x86_64-linux-gnu/sys/stat.h /usr/include/sys/stat.h
# ...etc
64 비트 Linux에서 작업하는 경우 libc6-dev-amd64를 설치하십시오. 우분투 터미널에서 다음 명령을 입력하십시오.
sudo apt-get install libc6-dev-amd64
sys 디렉토리는 많은 시스템 명령이있는 유닉스 / 리눅스 시스템 헤더 디렉토리입니다. 다른 브랜드 / 버전 리눅스는 다른 장소에 넣을 수 있습니다. 다음 명령이 도움이 될 수 있습니다.
find /usr/include -type d -name sys
On my ubuntu 16 got the two
/usr/include/bsd/sys
/usr/include/x86_64-linux-gnu/sys
첫 번째는 BSD 유닉스 시스템 헤더입니다.
두 번째는 Linux 64 비트 시스템 헤드를 포함하는 디렉토리입니다.
cmake가 sys / stat.h 파일을 찾을 수 없다는 문제가 발생합니다. 나의 임시 해결책은 상징적 인 링크를 만드는 것입니다
/user/local/include/sys/stat.h from /usr/include/x86_64-linux-gnu/sys/stat.h
/ usr / include 디렉토리를 오염시키지 않고 전체 sys 디렉토리가 아닌 하나의 특정 헤더 파일에만 링크를 만들고 있습니다. 나는 이것이 cmake의 결함이라고 생각하므로 링크를 하나만 만들어서 최소한의 영향을 미칩니다. 이것이 동일한 문제로 고통받는 사람들에게 도움이되기를 바랍니다.
gcc의 기본 검색 경로가 무엇인지 확인합시다. 에서 이 대답 , 우리는이 명령을 얻을 :
gcc -xc -E -v -
출력이 끝나면 내 컴퓨터에서 이것을 볼 수 있습니다.
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
두 번째 줄부터 마지막 줄에 주목하십시오. 즉, C 파일을로 컴파일하면 #include <sys/stat.h>
gcc는 심볼릭 링크없이 /usr/include/x86_64-linux-gnu/sys/stat.h
시도하기 전에 검색합니다 /usr/include/sys/stat.h
.
내 아키텍처는 amd64이므로 없습니다 libc6-dev-amd64
. 설치할 패키지는 libc6-dev-i386
입니다.
CPAN 패키지에 대한 종속성이 수정되었습니다.