我正在为 beaglebone black 设备交叉编译一个共享库 ( miniweb )。当我在没有优化的情况下编译时,我没有问题。但是,如果我使用任何优化(即)进行编译,-O3
我会在尝试运行我的程序时得到以下信息:
./myprogram: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.15' not found (required by /usr/lib/libminiweb.so)
我的第一个问题,为什么启用优化会突然导致我的程序依赖于这个库?禁用优化时内容是否静态包含在库中?
如何确定我的交叉编译器使用的 c 库版本?我ldd --version
在两个系统上都运行了以下命令:
桌面:
$ ldd --version
ldd (Ubuntu EGLIBC 2.19-0ubuntu6.6) 2.19
Copyright (C) 2014 Free Software Foundation, Inc.
比格骨:
ldd --version
ldd (Debian EGLIBC 2.13-38+deb7u1) 2.13
Copyright (C) 2011 Free Software Foundation, Inc.
显然我拥有的库已经过时了,但是你可以看到我的系统报告使用eglibc
而不是glibc
?
我的交叉编译库如何依赖glibc
?也许ldd
在我的桌面上运行并不能准确反映我的交叉编译器使用的库?
如何找到我的交叉编译器使用的 c 库?