/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

このパッケージをインストールすることを躊躇せず、「他のエラーが原因でヘッダーエラーが失われます」問題ではありません。多くの依存関係が欠落しており、すべての依存関係が存在するまでビルドは完了しません。コメントからlibjacklibxml2およびのライブラリもありませんlibgtk-x11-2.0。各問題を解決するには、適切な-devパッケージを見つける必要があります。 libc6-devパッケージをインストールし、ビルドがシステムヘッダーに文句を言わない場合、この問題は解決され、他のビルドの問題は直接関連しません。

答え2

ただシンボリックリンクで接続してください(自分の開発システムのためにこれを行うとします)。 Ubuntuの開発者は自分の利益のためにとてもスマートになっています。明らかに、クロスコンパイルが必要な場合は、スキップする必要がある別の橋があります。 「スマートに」、私の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

関連情報