如何在make文件中定义对其他包的依赖关系---- OpenWrt OS

时间:2014-04-03 17:41:29

标签: c makefile dependencies openwrt

我正在基于attitude_adjustment为TP-Link WDR4300创建自定义程序包 我正在使用我的包中的其他包(libnetfilter队列)中的函数。

汇编很顺利。但在链接阶段构建崩溃。显然链接器无法找到这些引用。
我已经定义了" DEPENDS:= + libnetfilter_queue"在packages目录中的Makefile中。建立仍然崩溃 我不清楚如何定义依赖关系 Makefile(src目录)中需要进行哪些修改。

我当前的Makefile(src目录)非常简单。它看起来像这样。

CFLAGS = -Wall
OBJS = main.o
全部:smartAP
%。o:%。c
$(CC)$(CFLAGS)-c -o $ @ $<
smartAP:$(OBJS)
$(CC)-o $ @ $(OBJS)
清洁:
    rm -f smartAP * .o

请告诉我如何在其他软件包中包含依赖项,以便构建完成。

yegorich的解决方案解决了我的构建问题。但是现在构建再次因包丢失而崩溃 构建日志:

install -d -m0755 /home/devnet/openwrt/attitude_adjustment/build_dir/target-mips_r2_uClibc-0.9.33.2/smartAP/ipkg-ar71xx/smartAP/usr/sbin

install -m0755 /home/devnet/openwrt/attitude_adjustment/build_dir/target-mips_r2_uClibc-0.9.33.2/smartAP/smartAP/home/devnet/openwrt/attitude_adjustment/build_dir/target-mips_r2_uClibc-0.9.33.2/smartAP/ipkg -ar71xx / smartAP / usr / sbin目录/

查找/home/devnet/openwrt/attitude_adjustment/build_dir/target-mips_r2_uClibc-0.9.33.2/smartAP/ipkg-ar71xx/smartAP -name' CVS' -o -name' .svn' -o -name'。#' -o -name' 〜' | xargs -r rm -rf

软件包smartAP缺少以下库的依赖项: libnetfilter_queue.so.1

我已经在Package Makefile中提到了对libnetfilter_queue的依赖。

include $(INCLUDE_DIR)/package.mk

define Package/smartAP
SECTION:=net
CATEGORY:=Network
DEPENDS:=+libnetfilter_queue
TITLE:=Smart Wireless Access Point
endef

我应该在其他地方提到依赖吗?

1 个答案:

答案 0 :(得分:1)

"DEPENDS:=+libnetfilter_queue"告诉构建系统在您的包之前构建libnetfilter_queue。您仍然需要在软件Makefile中定义链接器标志。类似的东西:

LDFLAGS = -lnetfilter_queue

有关编写M​​akefile和链接库的更多信息,请参阅此tutorial