gpt4 book ai didi

gcc - 为什么 GCC 交叉编译没有构建 `crti.o` ?

转载 作者:行者123 更新时间:2023-12-03 19:36:03 24 4
gpt4 key购买 nike

在尝试为 arm 构建 gcc 4.x.x 交叉编译器时,我被困在丢失的 crti.o 处。 $BUILD_DIR/gcc 中的文件子目录。

strace在顶层 Makefile显示编译后的 xgcc正在调用交联剂 ld"crti.o"作为论据。我假设如果交联 ld被调用, native /usr/lib/crti.o不是需要的。

我可以看到在 gcc 源代码树中有许多潜在的 crti 对象来源(包括 $SRC_DIR/gcc/config/arm/crti.asm )。

如何配置 gcc 构建以确保构建此文件(或从 ld 命令中省略)?

这是我的配置行:

/x-tools/build/gcc-4.5.0$ ../../src/gcc-4.5.0/configure --target=arm-linux --prefix=/opt/arm-tools --disable-threads --enable-languages=c

最佳答案

真正的答案是它应该编译 crti.o 如果要 build 一个臂 Sprite 目标。 在构建 arm-linux 目标时,gcc 人员合理地假设 glibc 之前已经编译过,它将提供 crti.o启动。完全合理,如果您要升级 .

构建新的根文件系统是另一回事,这是一个自相矛盾的故事(首先是:glibc 还是 gcc?)。一种方法(得到认可,但我还没有成功)是构建一个独立的 gcc(比如 arm-elf\static),然后是 glibc,然后是 gcc。

似乎有些人已经解决了丢失的问题 crti.o在 arm-linux 目标中通过修改 gcc\config\arm\t-linux .与其依赖不存在的 glibc,不如使用 arm-elf 提供的 crti.o 版本。 .一个例子可以在 here 中找到.

--- gcc-3.4.4/gcc/config/arm/t-linux    2003-09-20 17:09:07.000000000 -0400
+++ gcc-3.4.4.works/gcc/config/arm/t-linux 2005-05-25 20:44:07.000000000 -0400
@@ -18,3 +18,24 @@

# LIBGCC = stmp-multilib
# INSTALL_LIBGCC = install-multilib
+
+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o
+
+# If EXTRA_MULTILIB_PARTS is not defined above then define EXTRA_PARTS here
+# EXTRA_PARTS = crtbegin.o crtend.o crti.o crtn.o
+
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
+
+# Assemble startup files.
+$(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
+ -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm
+
+$(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES)
+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
+ -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm
+
+# Disable libc link
+
+SHLIB_LC =

关于gcc - 为什么 GCC 交叉编译没有构建 `crti.o` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com