我试图从Debian PC上为BeagleBone Black进行交叉编译,并且我能够构建一个“ hello-world”示例,并构建wxWidgets,但是当我编译一个wxWidgets应用程序时(“最小”示例)我失败了,因为我无法找到如何获取和链接 armhf 所需的库(GTK +,X11等...请参见我的问题here)
我找到了一个页面,该页面解释了如何使用BuildRoot为Raspberry进行编译,因此我采用了这种方法,并且能够配置并创建一个“主机”,该主机首先编译了wxWidgets,另一个是“最小”示例应用程序接下来。
问题是在我的BBB上它不会运行,因为使用了不同的gclib版本
debian@beaglebone:~$ ./minimal
./minimal: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.28' not found (required by ./minimal)
debian@beaglebone:~$ ldd --version
ldd (Debian GLIBC 2.24-11+deb9u3) 2.24
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
所以,我再次把头撞在墙上。 我应该在BuildRoot中使用哪些选项才能使用BBB中存在的相同gcc(以及所有必需的库,我不知道我应该看什么)?
Linux version 4.9.88-ti-r111 (root@b9-am57xx-beagle-x15-2gb) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP PREEMPT Sun Apr 22 08:04:34 UTC 2018
gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
答案 0 :(得分:0)
听起来您是在一个环境中构建并在另一环境中运行。
类似于在一个发行版上进行编译,然后尝试在另一个发行版上运行。
甚至在一个发行版上进行编译,然后使用另一个发行版运行-例如Debian Jessie 与 Stretch 。
更多证据表明您提到:
debian@beaglebone
和ldd (Debian GLIBC 2.24-11+deb9u3) 2.24
基本版本冲突是BuildRoot和Debian 9使用不同版本的libc(和其他库)
解决此问题的正确方法是在匹配的环境中构建。在这种情况下,应该是 Debian 9 -可以作为发行版,也可以至少作为chroot。您应安装的软件包为:
crossbuild-essential-armhf
这将为您提供必要的工具链和依赖性。