Joh*_*iak 9 linux gcc makefile libgcc
我正在尝试安装交叉编译器,这个教程,当我想制作libgcc时,我只是放入make all-target-libgcc
我的终端.这使得抛出错误
checking whether ln -s works... yes
checking for i586-elf-gcc... /usr/src/build-gcc/./gcc/xgcc -B/usr/src/build-gcc/./gcc/ -B/usr/local/cross/i586-elf/bin/ -B/usr/local/cross/i586-elf/lib/ -isystem /usr/local/cross/i586-elf/include -isystem /usr/local/cross/i586-elf/sys-include
checking for suffix of object files... configure: error: in `/usr/src/build-gcc/i586-elf/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make: *** [configure-target-libgcc] Error 1
Run Code Online (Sandbox Code Playgroud)
在config.log中我找到了
Target: i586-elf
Configured with: ../gcc-4.8.0/configure --target=i586-elf --prefix=/usr/local/cross -- disable-nls --enable-languages=c,c++ --without-headers : (reconfigured) ../gcc-4.8.0/configure --target=i586-elf --prefix=/usr/local/cross --disable-nls --enable-languages=c,c++ --without-headers : (reconfigured) ../gcc-4.8.0/configure --target=i586-elf --prefix=/usr/local/cross --disable-nls --enable-languages=c,c++ --without-headers
Thread model: single
gcc version 4.8.0 (GCC)
configure:3358: $? = 0
configure:3347: /usr/src/build-gcc/./gcc/xgcc -B/usr/src/build-gcc/./gcc/ - B/usr/local/cross/i586-elf/bin/ -B/usr/local/cross/i586-elf/lib/ -isystem /usr/local/cross/i586-elf/include -isystem /usr/local/cross/i586-elf/sys-include -V >&5
xgcc: error: unrecognized command line option '-V'
xgcc: fatal error: no input files
Run Code Online (Sandbox Code Playgroud)
实际上xgcc没有'-V'选项.我正在寻找如何编译libgcc的方法.
提前致谢
小智 15
这就是问题所在:在您尝试libgcc按照您的描述进行构建之前,您构建了一个极端的简单交叉编译器.现在,configure脚本运行的部分标准测试是测试编译器是否在正常条件下生成可正常工作的可执行文件.你的裸骨编译器不能.幸运的是,因为libgcc您不需要生成可执行文件,只需要生成静态库libgcc.a.问题是,愚蠢的GNU autoconf生成的脚本没有意识到这一点.
我遇到了同样的问题并设计了一个非常难看的解决方法.您需要在gcc源目录中注释掉libgcc/configure文件的一部分.这是我为我的版本注释的部分; 做类似你的事情:
在第3484行:
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
$as_echo "$ac_file" >&6; }
# BEGIN PHILLIP EDIT
# if test -z "$ac_file"; then :
# $as_echo "$as_me: failed program was:" >&5
# sed 's/^/| /' conftest.$ac_ext >&5
# { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
# $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
# { as_fn_set_status 77
# as_fn_error "C compiler cannot create executables
# See \`config.log' for more details." "$LINENO" 5; }; }
# fi
ac_file='a.out'
# END PHILLIP EDIT
ac_exeext=$ac_cv_exeext
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
我在尝试自行构建 libstdc++ 时遇到了类似的问题。配置选项--enable-offload-target=x86_64-pc-linux-gnu解决了这个问题并--disable-bootstrap节省了相当多的编译时间。添加前一个标志后,make all-target-libstdc++-v3不再抱怨 xgcc 并且编译器无法创建可执行文件。不需要上面的补丁,希望这会对其他人有所帮助。