我丢失了/usr/include/sys
目录及其所有标头。
我有 build-essentials 以及这个 make 所需的所有其他 -dev 包。
通过阅读周围的内容,我了解到符号链接到/usr/include/x86_64-linux-gnu/sys
from内部的标头是安全的/usr/include/sys
,因为目标处的标头是 64 位,但可以使用 32 位构建,除非需要特定的 32 位标头。
从某种程度上来说,这听起来很有道理,但我还是有疑问。
我读到的建议是符号链接到特定的标头,我想知道我是否可以符号链接到整个/usr/include/x86_64-linux-gnu/sys
目录,因为我可能会丢失许多标头。
。
虽然这是一个一般性问题,但我将包括我遇到的具体问题:
我无法创建 fsthost。它说它缺少 sys/types.h。
环顾四周,我看到了安装 libc6-dev-i386 的建议,最终用另一个错误替换了一个丢失的标头错误。所以我删除了它,因为它是针对 AMD 的。
这是我尝试make GTK2=1
为 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
在 Mint 17 Xfce 上运行。
答案1
该sys/types.h
标头属于 glibc(如果您不使用 glibc,则属于替代 libc 实现)。要获取该标头,您应该从您的发行版中安装 glibc 的开发包。
在 Debian 7 上,这个包是libc6-dev
.对于 ubuntu,它是libc6-dev-i386
(32 位)或libc6-dev-amd64
(64 位)。这些名称可能会起作用,具体取决于您的 mint 安装继承的发行版。
不要因为安装这个软件包而“最终用另一个错误改变了一个缺失的头错误”而犹豫不决。没关系,您缺少许多依赖项,并且在它们全部存在之前您的构建将无法完成。从评论中您还缺少libjack
,libxml2
和的库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