首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用libpcap库交叉编译OpenWRT的C程序?

如何用libpcap库交叉编译OpenWRT的C程序?
EN

Stack Overflow用户
提问于 2017-06-08 10:42:59
回答 1查看 1.3K关注 0票数 2

我有一小部分使用libpacp库的代码:

ifacelookup.c

代码语言:javascript
复制
#include <stdio.h>
#include <pcap.h>

int main(int argc, char *argv[])
{
    char *dev, errbuf[PCAP_ERRBUF_SIZE];

    dev = pcap_lookupdev(errbuf);
    if (dev == NULL) {
        fprintf(stderr, "Couldn't find default device: %s\n", errbuf);
        return(2);
    }
    printf("Device: %s\n", dev);
    return(0);
}

这方面的makefile是:

代码语言:javascript
复制
LIBS=-lpcap 
ifacelookup: ifacelookup.o
    $(CC) opensniff.o -o ifacelookup $(LDFLAGS) $(LIBS)
ifacelookupf.o: ifacelookup.c
    $(CC) $(CFLAGS) -c ifacelookup.c
clean:
    rm *.o ifacelookup

我在OpenWrt SDK上编译了它,并成功地构建了一个.ipk包。它是Makefile

代码语言:javascript
复制
include $(TOPDIR)/rules.mk

PKG_NAME:=ifacelookup
PKG_VERSION:=1.0.1
PKG_MAINTAINER:=MDK 
PKG_LICENSE:=GPL-2
PKG_BUILD_DEPENDS:=libpcap    # Added the dependancy 

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)

define Package/ifacelookup
    SECTION:=utils
    CATEGORY:=Utilities
    DEPENDS:=+libpcap    # Added the dependent library
    TITLE:=Test raditap header fields.
endef

define Package/$(PKG_NAME)/description
    Test the network card for the radiotap fields it supports.
endef

define Build/Prepare
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Build/Configure
endef

define Build/Compile
    $(MAKE) -C $(PKG_BUILD_DIR) $(TARGET_CONFIGURE_OPTS)
endef

define Package/$(PKG_NAME)/install
    $(INSTALL_DIR) $(1)/bin
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/bin
endef

$(eval $(call BuildPackage,$(PKG_NAME)))

当尝试在OpenWrt设备上安装此软件包时,请使用

代码语言:javascript
复制
 opkg install /tmp/ifacelookup_1.0.1_ar71xx.ipk  // transfered .ipk to /tmp folder using scp

我收到了一条错误消息:

代码语言:javascript
复制
Installing ifacelookup (1.0.1) to root...
Collected errors:
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for ifacelookup:
 *  libpcap * 
 * opkg_install_cmd: Cannot install package ifacelookup.

出什么问题了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-12 06:49:35

我让它起作用了。要使这个程序在OpenWrt上运行,应该在设备上安装libpcap

代码语言:javascript
复制
opkg update
opkg install libpcap
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44433537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档