您尚未登录。

楼主 # 2023-06-05 11:23:38

skrlaoshiren
会员
注册时间: 2019-12-03
已发帖子: 42
积分: 102

解决输出目录有libstdc++.so.6打包后上电却找不到的问题

来水一贴~这个问题好几个人问,单独编译某个库,然后加到sdk的输出目录里打包成镜像,上电后提示找不到库,但库在sdk的输出目录里是可以找到的。这是因为主机编译的时候会把没用到的库优化掉,不打包进镜像。解决办法就是强制指定一下库,告诉上层需要用到哪些库。

解决方案原帖: https://www.cnblogs.com/cxt-janson/p/10977976.html/
解决方案一:在 package/cpp-demo/Makefile 文件中定义 Package/cpp-demo/extra_provides 宏来强制性地将那几个库加进去。比如:

define Package/cpp-demo/extra_provides
    echo 'libstdc++.so.6'; \
    echo 'libm.so.6'; \
    echo 'libc.so.6';
endef

解决方案二:在 package/cpp-demo/Makefile 文件中定义 Package/cpp-demo/install 宏准备所需的库文件,将需要的几个库文件复制到 $(1) 对应的目录下。

define Package/cpp-demo/install
    $(INSTALL_DIR) $(1)/bin
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/cpp-demo $(1)/bin
 
    $(INSTALL_DIR) $(1)/usr/lib
    $(INSTALL_DATA) $(TOOLCHAIN_DIR)/lib/libstdc++.so.6 $(1)/usr/lib
    $(INSTALL_DATA) $(TOOLCHAIN_DIR)/lib/libm.so $(1)/usr/lib/libm.so.6
    $(INSTALL_DATA) $(TOOLCHAIN_DIR)/lib/libc.so $(1)/usr/lib/libc.so.6
endef

其中,INSTALL_DATA 与 TOOLCHAIN_DIR 这两个变量在 rules.mk 文件中定义。

解决方案三:在 package/cpp-demo/Makefile 文件中定义 Package/cpp-demo 宏加 DEPENDS 描述

define Package/cpp-demo
    ...<略>
    DEPENDS:+=libstdcpp
endef

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn