QNX Neutrino 的 libpcap 库在哪里?

Posted

技术标签:

【中文标题】QNX Neutrino 的 libpcap 库在哪里?【英文标题】:Where is the libpcap library for QNX Neutrino? 【发布时间】:2015-09-04 22:10:13 【问题描述】:

我知道 QNX 6.6 将 libpcap 作为其标准库的一部分。

当我链接到 libpcap.a 并尝试使用这些函数时,我得到“未定义的对 'function_name' 的引用”。

我需要让它真正工作的真正的 libpcap 库在哪里?有什么地方需要下载吗?


我是从 Momentics 构建的,所以没有一个命令可以构建。

在 Linker > other options 我有 -lpcap,在 Linker > extra libraries 我有 pcap。

有一种可能是我需要导入额外的库,但 libpcap 有数百个,我不知道我需要哪些。

至于输出,我收到一些无害的构建消息,然后是我的项目搜索路径,然后是其中 18 条关于不同功能的信息:

U:/.../target/qnx6/x86/usr/lib\libpcap.a(fad-getad.o): In function pcap_findalldevs':
(.text+0x2b): undefined reference to `getifaddrs'

其中一些在 pcap.h 中,而另一些则不在。这是完整列表:

'U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(scanner.o): 在函数pcap_lex': (.text+0x9c8): undefined reference togetaddrinfo' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(inet.o): 在函数pcap_lookupnet': (.text+0x6d8): undefined reference tosocket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(inet.o): 在函数pcap_lookupnet': (.text+0x744): undefined reference toioctl_socket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(inet.o): 在函数pcap_lookupnet': (.text+0x7c8): undefined reference toioctl_socket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(pcap-bpf.o):在函数pcap_set_datalink_bpf': (.text+0x16): undefined reference toioctl_socket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(pcap-bpf.o): 在函数pcap_stats_bpf': (.text+0x21a): undefined reference toioctl_socket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(pcap-bpf.o):在函数pcap_setdirection_bpf': (.text+0x3ef): undefined reference toioctl_socket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(pcap-bpf.o):(.text+0x49d):更多未定义的引用ioctl_socket' follow U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(fad-getad.o): In functionpcap_findalldevs': (.text+0x2b):对getifaddrs' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(fad-getad.o): In functionpcap_findalldevs'的未定义引用: (.text+0x175): 对freeifaddrs' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(gencode.o): In functiongen_mcode6' 的未定义引用: (.text+0x5777): 对freeaddrinfo' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(gencode.o): In functiongen_scode' 的未定义引用: (.text+0x5b36): 未定义引用freeaddrinfo' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In functionpcap_nametoaddr': (.text+0x2e): 对gethostbyname' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In functionpcap_nametoaddrinfo' 的未定义引用: (.text+0x93): 对getaddrinfo' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In functionpcap_nametonetaddr'的未定义引用: (.text+0xc4): 对getnetbyname' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In functionpcap_nametoport' 的未定义引用: (.text+0xee): 对getservbyname' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In functionpcap_nametoport' 的未定义引用: (.text+0x10f): 对getservbyname' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In functionpcap_nametoproto' 的未定义引用: (.text+0x251): 对 `getprotobyname' 的未定义引用

【问题讨论】:

也许你在链接时做错了什么。显示您正在运行的命令及其输出。 它为您提供了对 getifaddrs 的未定义引用,它不是 pcap 函数。也许您还需要链接到套接字库。 获得“未定义引用”的函数的完整列表是什么? (它确实找到了pcap_findalldevs(),但pcap_findalldevs()调用了getifaddrs(),它没有找到getifaddrs()。) 已编辑以添加完整列表。 @GreySag 那么您是否尝试链接到套接字库?那将是 -lsocket 标志(在链接到 pcap 库的任何标志之后) 【参考方案1】:

您必须将另一个库 (libsocket.a) 添加到链接器选项。 IE。您的链接器选项必须是....... -lpcap -lsocket。

【讨论】:

以上是关于QNX Neutrino 的 libpcap 库在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

[QNX 自适应分区用户指南]11 SchedCtl, SchedCtl_r()函数介绍

实验一:网络嗅探器

winpcap抓包原理

tcpdump抓包工具

tcpdump 常用例子

重庆矢崎仪表有限公司携手BlackBerry面向中国市场研发多款安全数字液晶仪表盘