/usr/include/sys에서 /usr/include/x86_64-linux-gnu/sys로 심볼릭 링크하는 것이 안전합니까?

/usr/include/sys에서 /usr/include/x86_64-linux-gnu/sys로 심볼릭 링크하는 것이 안전합니까?

/usr/include/sys디렉토리와 모든 헤더를 잃어버렸습니다 .
이 make에 필요한 빌드 필수 패키지와 기타 모든 -dev 패키지가 있습니다.

/usr/include/x86_64-linux-gnu/sys주위를 읽어보니 대상의 헤더가 64비트이기 때문에 내부 헤더에 심볼릭 링크하는 것이 안전 /usr/include/sys하지만 특정 32비트 헤더가 필요하지 않으면 32비트로 빌드할 수 있다는 것을 이해합니다 .

이는 어느 정도 합리적으로 들리지만 여전히 의심이 듭니다.

/usr/include/x86_64-linux-gnu/sys내가 읽은 조언은 특정 헤더에 심볼릭 링크를 걸라는 것입니다. 많은 헤더가 손실될 수 있으므로 전체 디렉토리에 심볼릭 링크를 걸 수 있는지 궁금합니다 .

.

일반적인 질문이지만 제가 겪은 특정 문제를 포함하겠습니다.

fsthost를 생성할 수 없습니다. sys/types.h가 누락되었다고 나와요.
주위를 둘러보니 누락된 헤더 오류가 다른 오류로 대체되는 libc6-dev-i386을 설치하라는 제안이 있었습니다. 그래서 AMD용이라 제거했습니다.

이것은 make GTK2=1fsthost 1.5.4에 대해 수행하려고 할 때 얻은 것 입니다.

gcc -c  -m32 -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libxml2 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz   -g -O2 -Wall -Wno-deprecated-declarations -Wno-multichar -frounding-math -fsignaling-nans -mfpmath=sse -msse2 -DNO_VUMETER -fno-pic -fno-PIC -I. -I/usr/include -I/usr/include -I/usr/include/wine -I/usr/include/wine/windows   -o gtk_32.o gtk.c
In file included from gtk.c:1:0:
jackvst.h:4:23: fatal error: sys/types.h: No such file or directory
 #include <sys/types.h>
                       ^
compilation terminated.
make: *** [gtk_32.o] Error 1

Mint 17 Xfce에서 실행 중입니다.

답변1

sys/types.h헤더는 glibc(또는 glibc를 사용하지 않는 경우 대체 libc 구현)에 속합니다. 이 헤더를 얻으려면 배포판에서 glibc의 개발 패키지를 설치해야 합니다.

Debian 7에서 이 패키지는 입니다 . Ubuntu의 경우 (32비트) 또는 (64비트) libc6-dev입니다 . 이 이름은 민트 설치가 상속받은 배포판에 따라 작동할 수 있습니다.libc6-dev-i386libc6-dev-amd64

이 패키지를 설치하는 것을 주저하지 말고 "다른 오류로 인해 누락된 헤더 오류가 변경됩니다". 문제가 되지 않습니다. 많은 종속성이 누락되어 있으며 종속성이 모두 존재할 때까지 빌드가 완료되지 않습니다. 의견에서 libjack, libxml2및 에 대한 라이브러리도 누락되었습니다 libgtk-x11-2.0. 각 문제를 해결하려면 -dev해당 패키지를 찾아야 합니다 . libc6-dev 패키지를 설치하고 빌드가 더 이상 시스템 헤더에 대해 불평하지 않으면 이 문제는 해결되고 다른 빌드 문제는 직접적으로 관련되지 않습니다.

답변2

그냥 심볼릭 링크로 연결하세요(자신의 개발 시스템을 위해 이 작업을 수행한다고 가정). 우분투 개발자들은 자신의 이익을 위해 너무 똑똑해지고 있습니다. 분명히 크로스 컴파일이 필요하다면 건너야 할 또 다른 다리가 있을 것입니다. "똑똑하게", 내 Mint 17.1 시스템에도 /usr/include/c++가 있습니다.그리고/usr/include/x86_64-linux-gnu/c++ 더 좋은 점은 다릅니다. 즉, 밖에서는 조심해야 한다는 뜻입니다.

cd /usr/include ; for f in x86_64-linux-gnu/*
do g=$(basename $f) ; test -f $g -o -d $g -o -L $g && continue
   ln -s $f $g ; done

관련 정보