尝试编译一个使用 pcap.h 的基本程序。我已经在我的 Mac OSX 机器上设置了环境,该机器使用适用于 iPhone 3GS 的 iPhone 3.1.3 SDK。我还将 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选项没有帮助。我试图用谷歌搜索一下这个问题,但那里的信息很少。
pcap.c
不是 libpcap 的来源,它是one将源文件添加到 libpcap.您必须编译所有源文件并将它们构建到库中。
Doing
CFLAGS="-I /Users/abnev/libpcap/include -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk" ./configure
might生成一个为 iOS 交叉编译 libpcap 的 Makefile。
我假设您将在越狱的 iPhone 上安装 libpcap 或使用它构建的应用程序,至少如果您要捕获数据包,因为您需要 root 访问权限才能使 libpcap 能够打开 BPF 设备为了能够捕捉到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)