+ -
当前位置:首页 → 问答吧 → 6.2版本在第六章编译binutils时出现cannot run C compiled programs错误

6.2版本在第六章编译binutils时出现cannot run C compiled programs错误

时间:2009-05-04

来源:互联网

出现cannot run C compiled programs错误

我使用LFS6.2在虚拟机上构建系统,按照书上做到6.11编译Binutils的时候执行MAKE命令时出现下面的错误
checking whether the C compiler works... configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.

在前一节调整工具链的时候做检查时本来是都没有错的,
但是在编译binutils发现错误后返回来我又做了一遍检查(在作第二次检查之前我备份了specs文件),发现其他检测是正确的但是不能找到那几个开始文件了(crt1.o,crti.o,crtn.o),重复做了几次修改specs的命令,都不行。现在我应该怎么做?是我的开始文件丢失了还是specs文件错误了,正确的specs文件关于开始文件的描述是怎么样的?

还有就是关于修改specs文件的命令
perl -p -e 's@\*startfile_prefix_spec:\n@$_/usr/lib/ @g;'
他的意思是什么意思,好像和sed的解释有点不同??

作者: 南极野人   发布时间: 2009-05-04

我碰到了类似的问题。
在虚拟机中,本来是在命令行下做,由于不放心敲打那么长的命令,在进行到5.7. 调整工具链,执行完:
GCC_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include &&
find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; &&
rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` &&
unset GCC_INCLUDEDIR
后,准备起来X后重新从头做,结果在2.3. 在新分区上创建文件系统时候,准备重新编译 E2fsprogs 包,然后用这个重新编译过的工具来创建文件系统,configure时候出错了:
checking whether the C compiler works... configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.
看了看config.log,有那么点有用的信息:
Thread model: posix
gcc version 4.1.2 (Gentoo 4.1.2 p1.1)
configure:1800: $? = 0
configure:1802: cc -V </dev/null >&5
gcc: '-V' option must have argument
configure:1805: $? = 1
configure:1828: checking for C compiler default output file name
configure:1831: cc conftest.c >&5
configure:1834: $? = 0
configure:1880: result: a.out
configure:1885: checking whether the C compiler works
configure:1891: ./a.out
../configure: line 1892: ./a.out: No such file or directory
configure:1894: $? = 127
configure:1903: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.

不知道咋回事

作者: kissinger_1984   发布时间: 2009-05-05

啊哦,没人理我
不过问题好像已经解决了,可能还是specs文件的原因。
由于之前错误在 开始文件 这个地方,所以一开始就只单独执行修改startfile 段的代码,但是这样做又出现其他检测项错误,然而为了方便起见又单独执行其他修改代码(虽然只有两段修改代码),但这样做总是又检测项出错,
后来发现用, gcc -dumpspecs 导出的specs文件并不是来自存储在gcc目录下的那个specs文件,无论你怎么改,他导出来的文件都一样,所以所有的修改必须同时修改才行,
哎,得出结论是,对于咱这样的新手还是完完全全的照着手册来吧

作者: 南极野人   发布时间: 2009-05-05

引用:
作者: kissinger_1984
我碰到了类似的问题。
在虚拟机中,本来是在命令行下做,由于不放心敲打那么长的命令,在进行到5.7. 调整工具链,执行完:
GCC_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include &&
find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; &&
rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` &&
unset GCC_INCLUDEDIR
后,准备起来X后重新从头做,结果在2.3. 在新分区上创建文件系统时候,准备重新编译 E2fsprogs 包,然后用这个重新编译过的工具来创建文件系统,configure时候出错了:
checking whether the C compiler works... configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.

不知道咋回事
在2.3节这个地方应该还没有安装编译工具吧,此时的编译工具应该是宿主机的,查查是不是宿主机的编译器有问题啊

作者: 南极野人   发布时间: 2009-05-05

我看不出来啥问题啊,大侠,能指教下怎么查看宿主编译器的问题呢

作者: kissinger_1984   发布时间: 2009-05-06

引用:
作者: kissinger_1984
我看不出来啥问题啊,大侠,能指教下怎么查看宿主编译器的问题呢
能说一 下你的环境不?看你的描述好像是在WIN下用虚拟机?是用的LIVECD?

作者: 南极野人   发布时间: 2009-05-06

引用:
作者: 南极野人
能说一 下你的环境不?看你的描述好像是在WIN下用虚拟机?是用的LIVECD?
我是Win下虚拟机Gentoo。不是liveCD,就是新增了一块虚拟硬盘做LFS,那问题本来第一次做没有的,就像我描述的,后来想在X从头下做,比较好复制长命令么,就出现了问题,大侠请看看我的emerge --info:
Portage 2.1.6.11 (default-linux/x86/2007.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.25-gentoo-r6 i686)
=================================================================
System uname: Linux-2.6.25-gentoo-r6-i686-Intel-R-_Core-TM-2_Duo_CPU_T7250_@_2.00GHz-with-glibc2.0
Timestamp of tree: Tue, 28 Apr 2009 15:15:01 +0000
ccache version 2.4 [enabled]
app-shells/bash: 3.2_p17-r1
dev-lang/python: 2.4.3-r4, 2.5.2-r7
dev-python/pycrypto: 2.0.1-r6
dev-util/ccache: 2.4-r7
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox: 1.2.18.1-r2
sys-devel/autoconf: 2.13, 2.61-r2
sys-devel/automake: 1.4_p6, 1.7.9-r1, 1.9.6-r2, 1.10.1
sys-devel/binutils: 2.18-r3
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool: 1.5.26
virtual/os-headers: 2.6.23-r3
ACCEPT_KEYWORDS="x86"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O3 -march=i686 -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/udev/rules.d"
CXXFLAGS="-O3 -march=i686 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="buildpkg ccache distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="ftp://gentoo.anheng.com.cn/gentoo http://mirror.averse.net/pub/gentoo/ http://61.135.158.199 http://ftp.isu.edu.tw/pub/Linux/Gentoo ftp://ftp.isu.edu.tw/pub/Linux/Gentoo http://ftp.twaren.net/Linux/Gentoo/ ftp://ftp.twaren.net/Linux/Gentoo/ http://ftp.ncnu.edu.tw/Linux/Gentoo/ ftp://ftp.ncnu.edu.tw/Linux/Gentoo/ http://ftp.cs.pu.edu.tw/Linux/Gentoo/ ftp://ftp.cs.pu.edu.tw/Linux/Gentoo/ http://gentoo.cs.nctu.edu.tw/gentoo/ ftp://gentoo.cs.nctu.edu.tw/gentoo/ "
LANG="en_US.utf8"
LDFLAGS=""
LINGUAS="zh zh_CN zh_TW"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
SYNC="rsync://mirror.averse.net/gentoo-portage"
USE="X acl alsa berkdb cdr cjk cli cracklib crypt cups dri dvd fortran gdbm gpm gtk iconv ipv6 isdnlog kde midi mmx mudflap ncurses nls nptl nptlonly opengl openmp pam pcre pppd qt3 qt3support qt4 readline reflection session spl sse sse2 ssl tcpd truetype unicode utf8 x86 xorg zlib" ALSA_CARDS="ens1371" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="zh zh_CN zh_TW" USERLAND="GNU" VIDEO_CARDS="vesa vga vmware"
Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY

作者: kissinger_1984   发布时间: 2009-05-07

引用:
作者: kissinger_1984
我是Win下虚拟机Gentoo。不是liveCD,就是新增了一块虚拟硬盘做LFS,那问题本来第一次做没有的,就像我描述的,后来想在X从头下做,比较好复制长命令么,就出现了问题,大侠请看看我的emerge --info:
Portage 2.1.6.11 (default-linux/x86/2007.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.25-gentoo-r6 i686)
既然是用虚拟机为什么不用LIVECD呢,他可是构建LFS最干净最合适的环境了,由于宿主机导致的问题一般都不会有,而且源代码都是现成的,不用下载。建议使用
至于你的问题,可以试一试第六章检测GCC的方法看看能不能找到原因,虽然检测的结果肯定不一样,但是那几个文件肯定是需要存在且正常工作的,一些搜索路径之类的相对与宿主机也因该是真确的。
或许可以回到字符界面再试下,看能否编译通过,也许是X的启动导致某些环境的改变呢?

还有可以看看youbest的佳作
如何提高LFS的成功率:http://www.linuxsir.org/bbs/showthread.php?t=252928

我是也是刚接触LFS不久,只能给你些简单提示了,希望能够对你有些帮助。

作者: 南极野人   发布时间: 2009-05-07

按照 冲天的方法 LIVECD肯定可以。
我已经OK了。但是我编译完就给 mkfs.ext3了。
因为我水平很差,之能用用suse之类简单的东西。

因为我实在没信心配置我的 X。太复杂了.....

作者: linux_pro   发布时间: 2009-05-07

南极野人, 请不要拿gentoo做 LFS。因为 GENTOO加了补丁( 这个是幻想说的话,我不是gentoo使用者,无从考证)

作者: linux_pro   发布时间: 2009-05-07

热门下载

更多