来水一贴~这个问题好几个人问,单独编译某个库,然后加到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
离线