linux |
您所在的位置:网站首页 › in function _start › linux |
根本原因:
当 GCC 调用的 LD 开始解析库依赖关系时,问题实际上就发生了。GCC 和 LD 都知道包含库的 sysroot,但是 LD 可能缺少一个关键组件:/etc/ld.so.conf 文件。这是来自 Raspberry PI 系统的 exampleld.so.conf 文件: 包括 /etc/ld.so.conf.d/*.conf /etc/ld.so.conf.d 目录包含以下文件: 00-vmcs.conf: /opt/vc/lib arm-linux-gnueabihf.conf: /lib/arm-linux-gnueabihf /usr/lib/arm-linux-gnueabihf libc.conf: /usr/local/lib 通用解决方案
通过将 LD 配置文件复制到跨工具链的 LD 可以找到它们的位置,可以轻松解决该问题。但是有一个陷阱:如果您的跨工具链是使用 MinGW 构建的(大多数都是),它可能无法访问 glob() 函数,因此它将无法解析启用通配符的包含语句,如 *.conf . 这里的解决方法是手动组合 /etc/ld.so.conf.d 中所有 .conf 文件的内容并将它们粘贴到/etc/ld.so.conf */opt/vc/lib /lib/arm-linux-gnueabihf /usr/lib/arm-linux-gnueabihf /usr/local/lib* 在正确的文件夹中创建 ld.so.conf 文件后,您的工具链将能够自动解析所有共享库引用,您将不会再看到该错误消息! |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |