LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1009|回复: 4

Xorg-6.9.0 安装出错 大家帮我看看

[复制链接]
发表于 2006-7-6 11:58:31 | 显示全部楼层 |阅读模式
:help:help
我下载了X11R6.9.0-src.tar.bz2
先解压具体的安装方法参见http://www.linuxfromscratch.org/blfs/view/svn/x/xorg.html

执行到这一步的时候出错了
sed -i -e "s@^#include <linux/config.h>@/* & */@" \
    `grep -lr linux/config.h *` &&
( make World 2>&1 | tee xorg-compile.log && exit $PIPESTATUS )错误代码如下

ftfuncs.c:57:10: #include expects "FILENAME" or <FILENAME>
ftfuncs.c:59:10: #include expects "FILENAME" or <FILENAME>
ftfuncs.c:60:10: #include expects "FILENAME" or <FILENAME>
ftfuncs.c: In function `FreeTypeOpenInstance':
ftfuncs.c:467: error: `TT_Face' undeclared (first use in this function)
ftfuncs.c:467: error: (Each undeclared identifier is reported only once
ftfuncs.c:467: error: for each function it appears in.)
ftfuncs.c:467: error: syntax error before "tt_face"
ftfuncs.c:471: error: `SFNT_Service' undeclared (first use in this function)
ftfuncs.c:471: error: syntax error before "sfnt"
ftfuncs.c:472: error: `tt_face' undeclared (first use in this function)
ftfuncs.c:472: error: syntax error before "face"
ftfuncs.c:486: error: `sfnt' undeclared (first use in this function)
ftfuncs.c:486: error: syntax error before "tt_face"
ftfuncs.c: In function `tt_get_metrics':
ftfuncs.c:815: error: `TT_LongMetrics' undeclared (first use in this function)
ftfuncs.c:815: error: syntax error before "longs_m"
ftfuncs.c:824: error: `longs_m' undeclared (first use in this function)
ftfuncs.c:824: error: syntax error before "header"
ftfuncs.c:829: error: `TT_ShortMetrics' undeclared (first use in this function)
ftfuncs.c:829: error: syntax error before ')' token
ftfuncs.c:830: error: syntax error before "header"
ftfuncs.c: In function `ft_get_very_lazy_bbox':
ftfuncs.c:845: error: `TT_Face' undeclared (first use in this function)
ftfuncs.c:845: error: syntax error before "ttface"
ftfuncs.c:852: error: `ttface' undeclared (first use in this function)
ftfuncs.c: In function `FT_Do_SBit_Metrics':
ftfuncs.c:914: error: `SFNT_Service' undeclared (first use in this function)
ftfuncs.c:914: error: syntax error before "sfnt"
ftfuncs.c:915: error: `TT_Face' undeclared (first use in this function)
ftfuncs.c:918: error: `TT_SBit_Strike' undeclared (first use in this function)
ftfuncs.c:918: error: syntax error before "strike"
ftfuncs.c:919: error: `TT_SBit_Range' undeclared (first use in this function)
ftfuncs.c:920: error: `TT_SBit_MetricsRec' undeclared (first use in this function)
ftfuncs.c:931: error: `face' undeclared (first use in this function)
ftfuncs.c:931: error: syntax error before "ft_face"
ftfuncs.c:932: error: `sfnt' undeclared (first use in this function)
ftfuncs.c:932: error: syntax error before "face"
ftfuncs.c:938: error: `range' undeclared (first use in this function)
ftfuncs.c:938: error: `strike' undeclared (first use in this function)
ftfuncs.c:955: warning: implicit declaration of function `FT_STREAM_POS'
ftfuncs.c:958: warning: implicit declaration of function `FT_STREAM_SEEK'
ftfuncs.c:961: error: `elem_metrics' undeclared (first use in this function)
make[5]: *** [ftfuncs.o] Error 1
make[5]: Leaving directory `/tmp/xcbuild/lib/font/FreeType'
make[4]: *** [FreeType] Error 2
make[4]: Leaving directory `/tmp/xcbuild/lib/font'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/tmp/xcbuild/lib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/tmp/xcbuild'
make[1]: *** [World] Error 2
make[1]: Leaving directory `/tmp/xcbuild'
make: *** [World] Error 2

不过我安装过libpng-1.2.10  和 fontconfig-2.3.95
我在网上查了很久,也没有找到答案。
发表于 2006-10-17 19:40:58 | 显示全部楼层
我也遇到同样的错误,关注
回复 支持 反对

使用道具 举报

发表于 2006-10-18 06:58:49 | 显示全部楼层
请问你使用的是哪个linux发行版?
回复 支持 反对

使用道具 举报

发表于 2006-10-18 15:12:08 | 显示全部楼层
BLFS,我现在似乎已经解决了,一会儿贴出来
回复 支持 反对

使用道具 举报

发表于 2006-10-18 15:14:04 | 显示全部楼层
BLFS编译Xorg-6.9.0问题

各种依存关系包都已装上,编译Xorg时出现错误:
ftfuncs.c:54:10: #include expects "FILENAME" or <FILENAME>
ftfuncs.c:56:10: #include expects "FILENAME" or <FILENAME>
ftfuncs.c:57:10: #include expects "FILENAME" or <FILENAME>
ftfuncs.c: In function `FreeTypeOpenInstance':
ftfuncs.c:464: error: `TT_Face' undeclared (first use in this function)
ftfuncs.c:464: error: (Each undeclared identifier is reported only once
ftfuncs.c:464: error: for each function it appears in.)
ftfuncs.c:464: error: parse error before "tt_face"
ftfuncs.c:468: error: `SFNT_Service' undeclared (first use in this function)
ftfuncs.c:468: error: parse error before "sfnt"
ftfuncs.c:469: error: `tt_face' undeclared (first use in this function)
ftfuncs.c:469: error: parse error before "face"
ftfuncs.c:483: error: `sfnt' undeclared (first use in this function)
ftfuncs.c:483: error: parse error before "tt_face"
ftfuncs.c: In function `tt_get_metrics':
ftfuncs.c:812: error: `TT_LongMetrics' undeclared (first use in this function)
ftfuncs.c:812: error: parse error before "longs_m"
ftfuncs.c:821: error: `longs_m' undeclared (first use in this function)
ftfuncs.c:821: error: parse error before "header"
ftfuncs.c:826: error: `TT_ShortMetrics' undeclared (first use in this function)
ftfuncs.c:826: error: parse error before ')' token
ftfuncs.c:827: error: parse error before "header"
ftfuncs.c: In function `ft_get_very_lazy_bbox':
ftfuncs.c:842: error: `TT_Face' undeclared (first use in this function)
ftfuncs.c:842: error: parse error before "ttface"
ftfuncs.c:849: error: `ttface' undeclared (first use in this function)
ftfuncs.c: In function `FT_Do_SBit_Metrics':
ftfuncs.c:911: error: `SFNT_Service' undeclared (first use in this function)
ftfuncs.c:911: error: parse error before "sfnt"
ftfuncs.c:912: error: `TT_Face' undeclared (first use in this function)
ftfuncs.c:915: error: `TT_SBit_Strike' undeclared (first use in this function)
ftfuncs.c:915: error: parse error before "strike"
ftfuncs.c:916: error: `TT_SBit_Range' undeclared (first use in this function)
ftfuncs.c:917: error: `TT_SBit_MetricsRec' undeclared (first use in this function)
ftfuncs.c:928: error: `face' undeclared (first use in this function)
ftfuncs.c:928: error: parse error before "ft_face"
ftfuncs.c:929: error: `sfnt' undeclared (first use in this function)
ftfuncs.c:929: error: parse error before "face"
ftfuncs.c:934: error: `range' undeclared (first use in this function)
ftfuncs.c:934: error: `strike' undeclared (first use in this function)
ftfuncs.c:951: warning: implicit declaration of function `FT_STREAM_POS'
ftfuncs.c:954: warning: implicit declaration of function `FT_STREAM_SEEK'
ftfuncs.c:957: error: `elem_metrics' undeclared (first use in this function)
make[5]: *** [ftfuncs.o] Error 1
make[5]: Leaving directory `/sources/xcbuild/lib/font/FreeType'
make[4]: *** [FreeType] Error 2
make[4]: Leaving directory `/sources/xcbuild/lib/font'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/sources/xcbuild/lib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/sources/xcbuild'
make[1]: *** [World] Error 2
make[1]: Leaving directory `/sources/xcbuild'
make: *** [World] Error 2

提示错误的是ftfuncs.c有多个未定义的数据类型,另外还指示了54、56、57三行包含的头文件有问题,应该就是没有include这三个头文件,以致后面的错误

下面一步步跟踪,首先看看ftfuncs.c在哪里:
# find . -name "ftfuncs.c"
./lib/font/FreeType/ftfuncs.c

看看它54、56、57行到底写了什么:
# vi ./lib/font/FreeType/ftfuncs.c
定位到54行,原来这几行是:
54: #include FT_INTERNAL_TRUETYPE_TYPES_H
56: #include FT_INTERNAL_SFNT_H
57: #include FT_INTERNAL_STREAM_H

原来在ftfuncs.c里,这三个头文件是用宏定义表示的,究竟是什么呢?使用下面命令查找来源:
# find . -name "*" | xargs grep FT_INTERNAL_TRUETYPE_TYPES_H
# find . -name "*" | xargs grep FT_INTERNAL_SFNT_H
# find . -name "*" | xargs grep FT_INTERNAL_STREAM_H

结果中会有这么几行:
./extras/freetype2/include/freetype/internal/internal.h:#define FT_INTERNAL_TRUETYPE_TYPES_H      <freetype/internal/tttypes.h>
./extras/freetype2/include/freetype/internal/internal.h:#define FT_INTERNAL_SFNT_H                <freetype/internal/sfnt.h>
./extras/freetype2/include/freetype/internal/internal.h:#define FT_INTERNAL_STREAM_H              <freetype/internal/ftstream.h>
显示这几个头文件都是在internal.h中声明的,查看该文件,它说自己是被ft2build.h包含的

另外查看ftfuncs.c,的确是include了ft2build.h

查找ft2build.h:
# find . -name "ft2build.h"
./lib/font/FreeType/module/ft2build.h
./extras/freetype2/devel/ft2build.h
./extras/freetype2/include/ft2build.h
分别查看内容,无论哪一个ft2build.h,都include了ftheader.h

查找ftheader.h:
# find . -name "ftheader.h"
./lib/font/FreeType/module/ftheader.h
./extras/freetype2/include/freetype/config/ftheader.h
分别查看内容,无论哪一个ftheader.h,都include了internal.h

这下大概搞清楚几个文件之间的包含关系了:
ftfuncs.c-->ft2build.h-->ftheader.h-->internal.h-->tttypes.h,sfnt.h,ftstream.h
够复杂的了。可是,为什么到最后不能找到头文件呢?难道是路径有问题?

ftfuncs.c里包含ft2build.h用的是include <>,也就是说,使用标准方式,到存放C库函数头文件所在的目录中寻找要包含的文件。于是找到编译ftfuncs.o是的语句:
gcc -m32 -c -ansi -Wall -Wpointer-arith -Wundef  -I/usr/include/freetype2 -I/usr/include/freetype2/config -I. -I../../../include/fonts -I../include -I../../../exports/include/X11            -I../../../programs/Xserver/include             -I../../../exports/include  -I../../.. -I../../../exports/include   -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L                          -D_POSIX_SOURCE -D_XOPEN_SOURCE                                 -D_BSD_SOURCE -D_SVID_SOURCE                                 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64                                  -D_GNU_SOURCE                            -DFUNCPROTO=15 -DNARROWPROTO   -DGCCUSESGAS -DAVOID_GLYPHBLT -DPIXPRIV -DSINGLEDEPTH                          -DXFreeXDGA -DXvExtension                               -DXFree86LOADER -DDLOPEN_HACK -DXFree86Server                           -DXF86VIDMODE                           -DXvMCExtension                                 -DSMART_SCHEDULE                                -DBUILDDEBUG -DXResExtension                            -DX_BYTE_ORDER=X_LITTLE_ENDIAN                          -DXORG_VERSION_CURRENT="(((6) * 10000000) + ((9) * 100000) + ((0) * 1000) + 0)"           -DXFREE86_FT2         -O2 -fno-strength-reduce -fno-strict-aliasing   ftfuncs.c -o unshared/ftfuncs.o

注意包含头文件那一段,好像没有包括上述几个ft2build.h所在的路径(都在xorg安装路径下),把上述几个ft2build.h改名为ft2build.h.bak再执行上面那句编译,也没说找不到ft2build.h,说明确实是存在另一个ft2build.h,而这个ft2build.h又没有正确include所需要的头文件

注意到上面的编译语句设定的路径还有/usr/include/freetype2和/usr/include/freetype2/config,于是在/usr目录下找:
# find /usr -name "ft2build.h"
/usr/include/ft2build.h
把它改名为ft2build.h.bak,再用上面的语句编译ftfuncs.c,果然说找不到ft2build.h了

继续查找其它需要的头文件:
# find /usr -name "ftheader.h"
/usr/include/freetype2/freetype/config/ftheader.h

# find /usr -name "internal.h"
/usr/include/pci/internal.h
/usr/include/php/ext/pcre/pcrelib/internal.h
(看路径和文件内容,这两个与xorg风马牛不相及)

另外三个:tttypes.h、sfnt.h、ftstream.h,更是不存在于/usr目录

现在知道问题在哪里了:编译程序找不到internal.h及其包含的头文件,经研究后执行:
# cp -rv ./extras/freetypes/include/freetype/* /usr/include/freetype2/freetype
也就是把头文件拷贝过去,执行上面的编译语句,没有问题,重新编译xorg,也OK了

其实我在安装xorg前是装好了freetype的,但就是不明白为什么缺了那几个头文件,看看网上,同样的问题也不少,现在也不清楚这样处理是否有什么后遗症,反正过了再说吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表