首页 > 解决方案 > Buildroot 错误:未定义对 - ld.so 的引用

问题描述

我是 Buildroot 新手(在虚拟机上的 Ubuntu 上使用 2021.02.5 版本),并在实习期间尝试为我的 ZedBorad(ARM 处理器)编译操作系统。

我按照给我的教程这样做,但我仍然无法make在不打印任何错误的情况下开始工作...... :(

我以这种方式配置了我想要的东西:

现在,返回给我的是错误,undefined reference to ... : 更准确地说,运行后我的日志结束make如下:

/home/ouriacc/workspace/Buildroot/build-zb/host/lib/gcc/arm-buildroot-linux-gnueabihf/9.4.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: /home/ouriacc/workspace/Buildroot/build-zb/build/glibc-2.32-50-g737efa27fca5c97f566a2005687fda7d6659cd2e/build/elf/librtld.os: in function `fdopendir':
(.text+0x1a89c): undefined reference to `__GI___fxstat64'
/home/ouriacc/workspace/Buildroot/build-zb/host/lib/gcc/arm-buildroot-linux-gnueabihf/9.4.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: (.text+0x1a8c0): undefined reference to `__GI___fcntl64_nocancel'
/home/ouriacc/workspace/Buildroot/build-zb/host/lib/gcc/arm-buildroot-linux-gnueabihf/9.4.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: /home/ouriacc/workspace/Buildroot/build-zb/build/glibc-2.32-50-g737efa27fca5c97f566a2005687fda7d6659cd2e/build/elf/ld.so.new: hidden symbol `__getpid' isn't defined
/home/ouriacc/workspace/Buildroot/build-zb/host/lib/gcc/arm-buildroot-linux-gnueabihf/9.4.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[4]: *** [Makefile:566 : /home/ouriacc/workspace/Buildroot/build-zb/build/glibc-2.32-50-g737efa27fca5c97f566a2005687fda7d6659cd2e/build/elf/ld.so] Erreur 1
make[3]: *** [Makefile:470 : elf/subdir_lib] Erreur 2
make[2]: *** [Makefile:9 : all] Erreur 2
make[1]: *** [package/pkg-generic.mk:250 : /home/ouriacc/workspace/Buildroot/build-zb/build/glibc-2.32-50-g737efa27fca5c97f566a2005687fda7d6659cd2e/.stamp_built] Erreur 2
make: *** [Makefile:23 : _all] Erreur 2

我在论坛上阅读了有关此错误的几个主题,但我仍然无法确切地知道在我的情况下我应该做什么。据我了解,我的ld.so库有问题,我应该添加一些东西来删除或修复这个错误,Makefile但我不知道该写什么,在哪里写,甚至Makefile我应该编辑哪个(因为有至少 2)...

有人有答案或其他解决方案可以帮助我吗?

标签: linuxbuildroot

解决方案


您似乎使用了外部工具链。尝试为您的工具链设置 LD_LIBRARY_PATH 环境变量。例如:

导出 LD_LIBRARY_PATH="/opt/x86-64-core-i7--glibc--stable-2020.08-1/x86_64-buildroot-linux-gnu/lib64:$LD_LIBRARY_PATH"

在您的情况下,以下将是合适的:

导出 LD_LIBRARY_PATH="/home/ouriacc/workspace/Buildroot/build-zb/host/lib/gcc/arm-buildroot-linux-gnueabihf/9.4.0/../../../../arm-buildroot -linux-gnueabihf/lib64:$LD_LIBRARY_PATH"

如果您使用一个或在您的 shell 环境中,您可以在 docker 中执行此操作。


推荐阅读