主题:【求助】在Unix下 build gcc -- 阿国
很初级的问题, 真不好意思问. 不过不知为不知, 还是问吧.
机器上的GCC版本很久了, 突发奇想要自己下载个新版本来弄弄.
下载容易, 也UNTAR了, 可没见到有什么Makefile, 怎么弄啊. 哪位知道的来说说?
gcc-4.2.3下有个cp和libstdc++-v3, 是不是我下少东西了.
外链出处,
To configure GCC: % mkdir objdir % cd objdir % srcdir/configure [options] [target]
可我怎么也找不到这configure.
-bash-3.00$ ls gcc-4.2.3/*/* gcc-4.2.3/libstdc++-v3/ChangeLog gcc-4.2.3/libstdc++-v3/ChangeLog-2005 gcc-4.2.3/libstdc++-v3/configure gcc-4.2.3/libstdc++-v3/ChangeLog-1998 gcc-4.2.3/libstdc++-v3/ChangeLog-2006 gcc-4.2.3/libstdc++-v3/configure.ac gcc-4.2.3/libstdc++-v3/ChangeLog-1999 gcc-4.2.3/libstdc++-v3/Makefile.am gcc-4.2.3/libstdc++-v3/configure.host gcc-4.2.3/libstdc++-v3/ChangeLog-2000 gcc-4.2.3/libstdc++-v3/Makefile.in gcc-4.2.3/libstdc++-v3/crossconfig.m4 gcc-4.2.3/libstdc++-v3/ChangeLog-2001 gcc-4.2.3/libstdc++-v3/README gcc-4.2.3/libstdc++-v3/fragment.am gcc-4.2.3/libstdc++-v3/ChangeLog-2002 gcc-4.2.3/libstdc++-v3/acinclude.m4 gcc-4.2.3/libstdc++-v3/linkage.m4 gcc-4.2.3/libstdc++-v3/ChangeLog-2003 gcc-4.2.3/libstdc++-v3/aclocal.m4 gcc-4.2.3/libstdc++-v3/ChangeLog-2004 gcc-4.2.3/libstdc++-v3/config.h.in gcc-4.2.3/gcc/cp: ChangeLog ChangeLog-2002 config-lang.in decl.c lang-specs.h ptree.c ChangeLog-1993 ChangeLog-2003 cp-gimplify.c decl.h lex.c repo.c ChangeLog-1994 ChangeLog-2004 cp-lang.c decl2.c mangle.c rtti.c ChangeLog-1995 ChangeLog.tree-ssa cp-objcp-common.c dump.c method.c search.c ChangeLog-1996 Make-lang.in cp-objcp-common.h error.c name-lookup.c semantics.c ChangeLog-1997 NEWS cp-tree.def except.c name-lookup.h tree.c ChangeLog-1998 call.c cp-tree.h expr.c operators.def typeck.c ChangeLog-1999 cfns.gperf cvt.c friend.c optimize.c typeck2.c ChangeLog-2000 cfns.h cxx-pretty-print.c g++spec.c parser.c ChangeLog-2001 class.c cxx-pretty-print.h init.c pt.c gcc-4.2.3/libstdc++-v3/config: abi allocator cpu io locale os gcc-4.2.3/libstdc++-v3/docs: doxygen html gcc-4.2.3/libstdc++-v3/include: Makefile.am backward c c_std ext std Makefile.in bits c_compatibility debug precompiled tr1 gcc-4.2.3/libstdc++-v3/libmath: Makefile.am Makefile.in copysignf.c mathconf.h signbit.c signbitf.c signbitl.c stubs.c gcc-4.2.3/libstdc++-v3/libsupc++: Makefile.am eh_arm.cc eh_terminate.cc new_handler.cc tinfo2.cc Makefile.in eh_aux_runtime.cc eh_throw.cc new_op.cc typeinfo cxxabi.h eh_call.cc eh_type.cc new_opnt.cc unwind-cxx.h del_op.cc eh_catch.cc eh_unex_handler.cc new_opv.cc vec.cc del_opnt.cc eh_exception.cc exception new_opvnt.cc vterminate.cc del_opv.cc eh_globals.cc exception_defines.h pure.cc del_opvnt.cc eh_personality.cc guard.cc tinfo.cc eh_alloc.cc eh_term_handler.cc new tinfo.h gcc-4.2.3/libstdc++-v3/po: Makefile.am POTFILES.in fr.po string_literals.cc Makefile.in de.po libstdc++.pot gcc-4.2.3/libstdc++-v3/scripts: check_compile extract_symvers gen_includers2.pl make_graphs.py check_performance gen_bind_includers.pl make_exports.pl testsuite_flags.in create_testsuite_files gen_includers.pl make_graph.py gcc-4.2.3/libstdc++-v3/src: Makefile.am ctype.cc ios_failure.cc locale.cc stdexcept.cc Makefile.in debug.cc ios_init.cc locale_facets.cc streambuf-inst.cc allocator-inst.cc debug_list.cc ios_locale.cc locale_init.cc streambuf.cc bitmap_allocator.cc ext-inst.cc iostream-inst.cc localename.cc string-inst.cc codecvt.cc fstream-inst.cc istream-inst.cc misc-inst.cc strstream.cc compatibility-ldbl.cc functexcept.cc istream.cc mt_allocator.cc tree.cc
没有makefile是正常的,makefile由automake和autoconf配合根据你的设定自动生成。而自动生成的过程就是./configure。
通常,configure这个文件就在gcc-4.2.3下面,我不太清楚你为啥要ls gcc-4.2.3/*/*,你直接ls -l gcc-4.2.3就应该可以看到这个文件了。
至于没下全,不太可能,没下全意味着tarball没做全,这种事情似乎十分难以想象。
btw.自己编译gcc,最好找些资料去看看,很多设置颇有一些学问的。
你下载的是gcc-g++-.4.2.3吧?如果只想安装C/C++编译器,至少还要把gcc-core下载来。
话说编译gcc不光设置麻烦,光编就要编上大半天,比编译内核慢得太多了。
想找些关于在UNIX下编译的教材, 有啥好介绍的吗. 例如那个MAKE是什么回事, 那个CONFIGURE是啥, 路径的设置有什么要注意的.
GNU MAKE manual and GNU auto-conf auto-make tools manual, 或者去google gnu make的tutorial,很多的:)
找'configure',可以在gcc的目录下,‘find . -name "configure' -print'
网上有编译gcc的'howto'可以看一下。
简单的就按次序来三条命令:
1. ./configure
2. make
3. make install(注意如果你不指定特定安装目录的话,运行这个命令需要先su成超级用户的)
如果make没成功结束,出了一堆中间产物,只要敲
make distclean或make clean 它就自动帮你清除这些失败产物,你又可以再make一次了.
不过make gcc可是苦差事, 我经常用一天工夫还是失败.所以要多下几个版本,一个版本不行就用另一个,总是能有一个在你的机器上运转的.要知道我还经常build交叉编译环境呢,那更麻烦,还得指定机器类型ARM或是SPARC以及什么二进制文件的ELF或是AOUT的格式之类的.