É seguro fazer um link simbólico para / usr / include / x86_64-linux-gnu / sys de / usr / include / sys?

2

Eu estou perdendo o /usr/include/sys dir e todos os seus cabeçalhos.
Eu tenho essenciais de compilação e supostamente todos os outros pacotes -dev que eu preciso para isso.

Da leitura ao redor eu entendo que é seguro fazer uma ligação simbólica para os cabeçalhos dentro de /usr/include/x86_64-linux-gnu/sys de /usr/include/sys porque os cabeçalhos no alvo são 64 bits mas funcionam com 32 bits, a menos que um cabeçalho específico de 32 bits seja necessário.

Parece razoável até certo ponto, mas tenho minhas dúvidas.

A sugestão que eu li foi de link simbólico para os cabeçalhos específicos, e eu me pergunto se eu posso apenas ligar simbolicamente a todo o /usr/include/x86_64-linux-gnu/sys dir, já que provavelmente estou perdendo vários cabeçalhos.

.

Embora essa seja uma pergunta geral, incluirei o problema específico que encontrar:

Não estou conseguindo criar o fsthost. diz que está faltando sys / types.h.
Olhando em volta, vi uma sugestão para instalar o libc6-dev-i386, que acabou mudando uma falha de cabeçalho perdida para outra. Então eu removi porque é para a AMD.

Isto é o que eu recebo quando tento fazer make GTK2=1 para o fsthost 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

Executando no Mint 17 Xfce.

    
por pfff 26.11.2014 / 19:16

2 respostas

1

O cabeçalho sys/types.h pertence à glibc (ou uma implementação alternativa da libc se você não estiver usando a glibc). Para obter esse cabeçalho, você deve instalar o pacote de desenvolvimento para o glibc de sua distribuição.

No debian 7, este pacote é libc6-dev . Para o Ubuntu é libc6-dev-i386 (32 bits) ou libc6-dev-amd64 (64 bits). Esses nomes provavelmente funcionarão dependendo de qual distro sua instalação de menta herda.

Não se preocupe com a instalação deste pacote "que acabou mudando uma falha de cabeçalho perdida por outra". Tudo bem, você está perdendo muitas dependências e sua compilação não será concluída até que estejam todas lá. Nos comentários, você também está perdendo bibliotecas para libjack , libxml2 e libgtk-x11-2.0 . Para resolver cada um deles, você precisará encontrar os respectivos pacotes -dev para cada um. Se você instalar o pacote libc6-dev e a compilação não reclamar mais dos cabeçalhos do sistema, esse problema será resolvido e seus outros problemas de compilação não estarão diretamente relacionados.

    
por 12.03.2015 / 17:06
0

Basta criar uma ligação simbólica (assumindo que você está fazendo isso para o seu próprio sistema de desenvolvimento). Os desenvolvedores do Ubuntu ficaram espertos demais para o seu próprio bem. Se você precisar cruzar a compilação, obviamente, você terá outra ponte para atravessar. "Inteligentemente", o meu sistema Mint 17.1 tem ambos / usr / include / c ++ e / usr / include / x86_64-linux-gnu / c ++. Melhor ainda, são diferentes. Isso significa que você tem que ter cuidado lá fora.

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
    
por 12.03.2015 / 16:49

Tags