构建 binutils-2.31.1:未生成链接器

问题描述 投票:0回答:2

作为尝试构建 gcc 8.2 交叉编译器(针对 ia64-hp-hpux11.31)的一部分,我在构建 binutils 2.31.1 时遇到了问题。构建实际上似乎完成得很好。我以一堆二进制文件(ar、objdump、字符串等)结束,但缺少一些重要的文件,例如

as
ld
。我认为我正确配置了 binutils,明确启用 ld 并禁用 gold:
../binutils-2.31.1/configure --target=ia64-hp-hpux11.31 --enable-ld=yes --enable-gold=no

我扫描了整个构建过程的stdout + stderr输出,但没有找到任何提示。唯一可疑的是

configure
输出:
checking whether we are cross compiling... no
。既然我正在构建交叉编译,那不应该说是吗?如果我对
--build
--host
--target
如何工作的理解是正确的,这是否意味着交叉编译?

我应该注意这是我第一次尝试构建交叉编译器。我还应该注意到,我的Linux“机器”是Windows Subsystem for Linux下的Ubuntu 16.04.2 LTS,也许这与它有关。


我的配置日志

gcc linker binutils
2个回答
0
投票

参见第 3744 行的

configure
脚本:

  ia64*-**-hpux*)
    # No ld support yet.
    noconfigdirs="$noconfigdirs gdb libgui itcl ld"
    ;;

这会导致在构建过程中跳过

ld
目录。

不过,您应该有一个汇编器,构建为

gas/as-new
(在
make install
之后将安装为
ia64-hp-hpux11.31-as
)。


0
投票

我使用此 Makefile 部分从

binutils
组合源代码树构建跨
gcc

.PHONY: cross0
cross0: $(TMP)/gcc/binutils $(TMP)/gcc/gcc cclibs
    rm -rf $(TMP)/gcc-build ; mkdir $(TMP)/gcc-build ; cd $(TMP)/gcc-build ;\
    $(XPATH) $(TMP)/gcc/$(CFG) $(BINUTILS_CFG) $(GCC0_CFG)                &&\
    $(XPATH) $(MAKE) -j$(CORES)     all-binutils     all-ld     all-gas   &&\
    $(XPATH) $(MAKE)            install-binutils install-ld install-gas

(all|install)-binutils maketarget 至少不包括

ld
和 GNU
as
所以必须单独完成

XPATH
变量看起来像
PATH=~/$(USER)/cross:$(PATH)
,需要让
configure
找到已经编译到交叉编译器工具链中的$(TARGET)-xxx工具,并在build中调用它们

© www.soinside.com 2019 - 2024. All rights reserved.