编译gcc4.2.0遇到些问题,希望高手指教。
编译这个主要是想编译arm交叉编译工具链,网上说这个东西非常难以成功,一直没敢试。
当然,凡是要从简单的来,所以先编译个native compiler。
我只下了四个包,gcc, gcc-core, gcc-g++, gcc-test。
发问:我只需要处理c语言,不知道这是个够否?编译出来会不会缺什么东西?
第一次没做任何配置,全部缺省。不知道花了多久,下班走人让他自己搞。第二天看编译成功。
gcc可以用,由于不想装到系统目录,没有make install。
第二次,依照gcc文档推荐。srcdir和objdir分开。并在objdir下建立一个目录作为安装目录(prefix选项)
将prefix目录作为objdir目录的子目录也是gcc文档推荐的。结果编译失败,stage2和stage3 compare
failed。重试三次(先clean distclean了所以东西,还有一次是删掉源目录重新解压),结果相同。
第三次,将prefix目录移出作为单独目录,不作为objdir的子目录。结果同上。
第四次,不将srcdir和objdir分开。直接在源码根目录下做,同第一次,只是多配置了个prefix目录。
make install之后,安装目录下啥都有,像模像样。不知道缺啥。
再次请问下,是不是gcc编译时srcdir和objdir不能分开啊?那那个gccinstall.info文档不是忽悠我们?
哪位搞过?
比较了一下RHEL3自带的gcc -v。发现他enable了好多东西。我生成的这个就一个光秃秃的--prefix。
三问:这样编译器是不是会少很多功能?
接着,测试编译结果。编译openssl。编译成功,生成的openssl工具似乎可以用。
但是make test时,报错。
这个openssl用RHEL3自带的gcc(v3.2)编译是没有问题的,make test也可以通过。
请问:这个有没有可能和config选项有关?应用软件挑编译器版本的情况多不多(我自己觉得不多)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在编译GCC的过程中,最好应该把build目录、install目录与source目录分开。在GCC4.0以前的版本如果在源代码目录下编译不会出错,但是4.0以后因为修改了编译脚本,可能会出现莫名其妙的错误。
对于定制GCC支持的源语言类型,最好是下载GCC的完整程序包,通过编译选项--enable-languages=来指定,比如要支持c和C++,那么可以通过选项--enable-languages=c,c++来指定。
如果只make,而没有make install,那么在prefix指定的目录下就不会有任何文件,包括GCC的库文件也不会安装到指定安装目录。如果要支持某些特殊功能,那么就要仔细查阅GCC的帮助文档。推荐一个网址:http://gcc.gnu.org/onlinedocs/gccint/。
make test出错可能和版本有关,毕竟3.2和4.2之间改动了很多。也不排除是4.2某个bug导致的。
[ 本帖最后由 flying_insky 于 2007-6-21 11:19 编辑 ]
我在win2000下编译过一次,自己建的安装目录。我的版本是4.1.1,解压包的install目录下有各种文档,可以参考一下。编译失败要看具体的原因,过程中应该有提示。
C:\Documents and Settings\Administrator>gcc -v
Using built-in specs.
Target: mingw32
Configured with: ../gcc-4.1.1/configure --prefix=/mingw --host=mingw32 --target=
mingw32 --disable-shared --with-gnu-as --with-gnu-ld --enable-threads --enable-l
anguage=c,c++ --disable-libada --with-dwarf2 --disable-win32-registry --disable-
nls : (reconfigured) ../gcc-4.1.1/configure --prefix=/mingw --host=mingw32 --tar
get=mingw32 --disable-shared --enable-threads --enable-language=c,c++ --disable-
libada --with-dwarf2 --disable-win32-registry --disable-nls --with-gc : (reconfi
gured) ../gcc-4.1.1/configure --prefix=/mingw --host=mingw32 --target=mingw32 --
disable-shared --enable-threads --enable-language=c,c++ --disable-libada --with-
dwarf2 --disable-win32-registry --disable-nls
Thread model: win32
gcc version 4.1.1
这是我的gcc,configure过好几次,编译过程中主要是ld的路径错误,后来自己指定的。几个月了,一直在win下工作还算正常。
你这样编真的太麻烦了。
看看这个网址:
http://kegel.com/crosstool/cross ... rosstool-howto.html
我就是用这个工具直接编译出来的。
如果你的网络好,执行脚本后3个小时自己就出来arm工具链了。
如果您自己下载所需的软件包到适当的目录会更快。
要求用非root用户执行。
楼主可以看看linux LFS