OpenWrt开发之包依赖

OpenWrt开发之包依赖

本站内容版权属于本人。转载须告知本人,写明出处,并在文首提供指向本站对应文章的链接。
本文链接:OpenWrt开发之包依赖

在《如何在OpenWrt上开发》这篇中提到包是可以依赖其他包的,但并未详细说明,这里来补上。

仅运行时依赖

如果你的包依赖不需要在编译包期间做什么,比如只是个Luci界面扩展,或者只是一些脚本,那么加到Makefile里面就可以了。

编译时依赖

但也有很多时候,包会提供动态链接库,依赖它的包会使用这个动态链接库,这时就需要改更多地方来实现编译时的依赖。

比如我让mypackage依赖libuci这个包,并在程序中使用libuci.so。首先,修改Makefile

然后更新src/main.c,这里没有做实际的事情,只是调用了libuci.so中的两个方法。

openwrt目录下更新依赖并编译,下载依赖只需要在第一次加依赖的时候做:

最终编译成功,并在路由器上也可以成功安装运行。

让自己的包可以被编译时依赖

查看libuciMakefile文件,可以看到以下内容:

Build/InstallDev这段定义了在编译完成时做的事情,这里提供了头文件uci.h和动态链接库libuci.so给后来编译的包,也是就依赖它的包,来使用。

在IDE里编辑

如果在IDE里面编辑main.c,会出现找不到uci.h的问题。在使用命令成功编译后,这个头文件的位置在openwrt目录下的staging_dir/<target>/usr/include。将这个目录加到IDE的C/C++头文件引用路径就可以解决这个问题。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据