完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
解读错误与解决方法:
(主要原因是GCC的版本过高) 1:全英文的这部分说的是你的系统中缺少相应版本的makeinfo软件。 因为gcc4.1以上的版本需要makeinfo的版本为4.2或更高。 所以输入命令行: makeinfo --version 想查看makeinfo的版本。结果得到了以下信息: The program 'makeinfo' is currently not installed. You can install it bytyping: sudo apt-get install texinfo 按照提示输入命令,问题得到解决。 2:本机使用的Texinfo是4.11版本, 出现此错误的原因也在于configure文件中texinfo对该版本不支持,可以在解压gcc4.1.1文件夹中的configure文件里找到 以下语句 # For an installed makeinfo, we require it to be from texinfo 4.2 or # higher, else we use the "missing" dummy. if ${MAKEINFO} --version | egrep 'texinfo[^0-9]*([1-3][0-9]|4.[2-9]|[5-9])' >/dev/null 2>&1;then : else MAKEINFO="$MISSING makeinfo" fi ;; 其中4.[2-9]|[5-9]表示的是支持4.2-4.9之间的几个版本,所以需要自己添加4.[1-9][0-9]*,以支持4.11版本。即把'texinfo[^0-9]*([1-3][0-9]|4.[2-9]|[5-9])'编辑成'texinfo[^0-9]*([1-3][0-9]|4.[2-9]|4.[1-9][0-9]*|[5-9])'后保存,编译通过。 本来以为这样就可以了,所以将gcc-obj中生成文件删除后,用以下两条命令重新编译。 % ../gcc4.1.1/configure --prefix=/home/ssm/gcc4 --enable-threads--disable-checking --enable--long-long --host=i386-Ubuntu-linux--with-system-zlib --enable-languages=c,c++,java make 不过依旧有问题 错误信息如下: ../../gcc-4.1.1/gcc/java/jcf-io.c:43:18: error: zlib.h: 没有该文件或目录 ../../gcc-4.1.1/gcc/java/jcf-io.c: In function ‘read_zip_member’: ../../gcc-4.1.1/gcc/java/jcf-io.c:193: error: ‘Z_NO_COMPRESSION’ undeclared(first use in this function) ../../gcc-4.1.1/gcc/java/jcf-io.c:193: error: (Each undeclared identifier isreported only once ../../gcc-4.1.1/gcc/java/jcf-io.c:193: error: for each function it appears in.) ../../gcc-4.1.1/gcc/java/jcf-io.c:206: error: ‘z_stream’ undeclared (first usein this function) ../../gcc-4.1.1/gcc/java/jcf-io.c:206: error: expected ‘;’ before ‘d_stream’ ../../gcc-4.1.1/gcc/java/jcf-io.c:207: error: ‘d_stream’ undeclared (first usein this function) ../../gcc-4.1.1/gcc/java/jcf-io.c:207: error: ‘alloc_func’ undeclared (firstuse in this function) ../../gcc-4.1.1/gcc/java/jcf-io.c:207: error: expected ‘;’ before numericconstant ../../gcc-4.1.1/gcc/java/jcf-io.c:208: error: ‘free_func’ undeclared (first usein this function) ../../gcc-4.1.1/gcc/java/jcf-io.c:208: error: expected ‘;’ before numericconstant ../../gcc-4.1.1/gcc/java/jcf-io.c:209: error: ‘voidpf’ undeclared (first use inthis function) ../../gcc-4.1.1/gcc/java/jcf-io.c:209: error: expected ‘;’ before numericconstant ../../gcc-4.1.1/gcc/java/jcf-io.c:225: warning: implicit declaration offunction ‘inflateInit2’ ../../gcc-4.1.1/gcc/java/jcf-io.c:225: error: ‘MAX_WBITS’ undeclared (first usein this function) ../../gcc-4.1.1/gcc/java/jcf-io.c:226: warning: implicit declaration offunction ‘inflate’ ../../gcc-4.1.1/gcc/java/jcf-io.c:226: error: ‘Z_NO_FLUSH’ undeclared (firstuse in this function) ../../gcc-4.1.1/gcc/java/jcf-io.c:227: warning: implicit declaration offunction ‘inflateEnd’ make[2]: *** [java/jcf-io.o] 错误 1 make[2]:正在离开目录 `/home/ssm/gcc-obj/gcc' make[1]: *** [all-gcc] 错误 2 make[1]:正在离开目录 `/home/ssm/gcc-obj' make: *** [all] 错误 2 解读错误与解决方法: (主要问题在于你输入的命令行当中包含了你的系统中不存在的相应软件) 注:上面的命令行中有这一部分 --with-system-zlib 我把这部分都删除了,才解决这个错误。 原因很简单是因为--with-system-zlib,当然要求你先装装好 zlib (zlib是一种提供数据压缩的函数库--自由软件),特别是 zlib 的开发包了,一般是zlib-devel,在你系统没有安装zlib的前提下,删除该条即可。 另一种解决办法就是:你先安装好zlib,然后再编译。 sudo apt-get install zlib 但是在我的机器上出现了如下问题:找不到zlib(所以我用上面那个方法解决的问题) 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 E: 无法找到软件包 zlib 在修正上面这些错误之后进行如下步骤: 第六步:安装 %make install 至此gcc4.1.1就安装好啦。 其它设置 GCC 4.1.1的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在 lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。 gcc、g++、gcj的设置 要想使用GCC ${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。??4.1.1的gcc等命令,简单的方法就是把它的路径 首先,查看原来的gcc所在的路径: % which gcc 在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 4.1.1中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接: % cd /usr/bin % ln -s ${destdir}/bin/gcc gcc4 % ln -s ${destdir}/bin/g++ g++4 % ln -s ${destdir}/bin/gcj gcj4 (若不是使用root用户登录,则需要在命令行前面加 sudo ) 这样,就可以分别使用gcc4、g++4、gcj4来调用GCC 4.1.1的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。 库路径的设置 将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。 例如,如果GCC 4.1.1安装在/home/ssm/gcc4目录下,在Ubuntu Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句: $LD_LIBRARY_PATH 测试 1:看一下gcc4的版本: gcc4 -v 如果编译成功则输出如下信息: 使用内建 specs。 目标:i386-Ubuntu_linux 目标为:../gcc4.1.1/configure --prefix=/home/ssm/gcc4 --enable-threads--disable-checking --enable--long-long --host=i386-Ubuntu-linux--enable-languages=c,c++,java 线程模型:posix gcc版本 4.1.1 2:用新的编译命令(gcc4、g++4等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。 例如:gcc4 -o hello.c hello
最佳答案
|
|
|
|
sudo apt-get install texi2html
|
|
|
|
缺少必要的库支持
|
|
|
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4880 浏览 0 评论
87376 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4702 浏览 2 评论
3592 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2467 浏览 0 评论
1977浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1339浏览 1评论
1247浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1317浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1221浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 16:36 , Processed in 0.988259 second(s), Total 49, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号