【问题标题】:Can libpcap be compiled for iPhone/armv6?可以为 iPhone/armv6 编译 libpcap 吗?
【发布时间】:2010-06-18 15:36:52
【问题描述】:

尝试编译一个使用 pcap.h 的基本程序。我已经在我的 Mac OSX 盒子上设置了环境,它使用 iPhone 3.1.3 SDK for iPhone 3GS。我还将 libpcap 安装到 ~/libpcap 中,因此我可以使用 -I 标志告诉 gcc 在哪里查找标头。但是,它会失败并显示 ld 警告,指出该文件不是所需的架构。

我正在编译以下行:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -I /Users/abnev/libpcap/include -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk -o pcap pcap.c -lpcap

正在生成的错误是:

ld: warning: in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/usr/lib/libpcap.dylib, file is not of required architecture
Undefined symbols:
  "_pcap_geterr", referenced from:
      _main in ccOL3e0B.o
      _main in ccOL3e0B.o
  "_pcap_open_live", referenced from:
      _main in ccOL3e0B.o
  "_pcap_next", referenced from:
      _main in ccOL3e0B.o
  "_pcap_lookupdev", referenced from:
      _main in ccOL3e0B.o
  "_pcap_setfilter", referenced from:
      _main in ccOL3e0B.o
  "_pcap_lookupnet", referenced from:
      _main in ccOL3e0B.o
  "_pcap_close", referenced from:
      _main in ccOL3e0B.o
  "_pcap_compile", referenced from:
      _main in ccOL3e0B.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

我现在假设我需要为 armv6 架构 (iPhone) 重新编译 libpcap,但检查 ./configure 选项并没有帮助。我已经尝试过用谷歌搜索,但几乎没有。

【问题讨论】:

    标签: iphone architecture libpcap tcpdump armv6


    【解决方案1】:

    pcap.c 不是 libpcap 的源文件,它是 libpcap 源文件的一个。您必须编译所有源文件并将它们构建到库中。

    在做

    CFLAGS="-I /Users/abnev/libpcap/include -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk" ./configure
    

    可能生成一个 Makefile 可以交叉编译 iOS 的 libpcap。

    我假设您将在越狱的 iPhone 上安装 libpcap 或使用它构建的应用程序,至少如果您要捕获数据包,因为您需要 root 访问权限才能打开 libpcap一个 BPF 设备,以便能够捕获。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 2012-03-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 2014-05-03
      相关资源
      最近更新 更多