linux - Buildroot 错误:未定义对 - ld.so 的引用
问题描述
我是 Buildroot 新手(在虚拟机上的 Ubuntu 上使用 2021.02.5 版本),并在实习期间尝试为我的 ZedBorad(ARM 处理器)编译操作系统。
我按照给我的教程这样做,但我仍然无法make
在不打印任何错误的情况下开始工作...... :(
我以这种方式配置了我想要的东西:
- 内核>
Linux Kernel
禁用 - 引导加载程序 >
U-Boot
禁用 - 工具链 > C 库 =
glibc
- 目标包 >
python3
、xml
模块python-lxml
和python-numpy
所有选定的 - 网络应用程序 >
dhcpcd
并dropbear
选中
现在,返回给我的是错误,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)...
有人有答案或其他解决方案可以帮助我吗?
解决方案
您似乎使用了外部工具链。尝试为您的工具链设置 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 中执行此操作。
推荐阅读
- python - 如何从 8 位中取出第 3 位
- php - PHP Post Form,无法上传超过 25MB 的文件
- deployment - 启动wildfly后如何通过脚本依次部署WAR?
- javascript - WeakMap 和 JavaScript ES6 中类的私有成员有什么区别吗?
- javascript - 如何使用 Jest 和 Enzyme 测试样式组件以具有属性
- javascript - 3 个字符后的 Javascript 预输入
- json - 将 XSD 导入 OpenAPI
- mvvm - 如何正确使用 Retrofit 解析 JSON 并在 RecyclerView 中实现?
- laravel - Laravel 发布单选按钮
- python - Django Custom MultiWidget 保留旧值