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 to
getaddrinfo' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(inet.o): 在函数pcap_lookupnet': (.text+0x6d8): undefined reference to
socket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(inet.o): 在函数pcap_lookupnet': (.text+0x744): undefined reference to
ioctl_socket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(inet.o): 在函数pcap_lookupnet': (.text+0x7c8): undefined reference to
ioctl_socket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(pcap-bpf.o):在函数pcap_set_datalink_bpf': (.text+0x16): undefined reference to
ioctl_socket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(pcap-bpf.o): 在函数pcap_stats_bpf': (.text+0x21a): undefined reference to
ioctl_socket' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(pcap-bpf.o):在函数pcap_setdirection_bpf': (.text+0x3ef): undefined reference to
ioctl_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 function
pcap_findalldevs': (.text+0x2b):对getifaddrs' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(fad-getad.o): In function
pcap_findalldevs'的未定义引用: (.text+0x175): 对freeifaddrs' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(gencode.o): In function
gen_mcode6' 的未定义引用: (.text+0x5777): 对freeaddrinfo' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(gencode.o): In function
gen_scode' 的未定义引用: (.text+0x5b36): 未定义引用freeaddrinfo' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In function
pcap_nametoaddr': (.text+0x2e): 对gethostbyname' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In function
pcap_nametoaddrinfo' 的未定义引用: (.text+0x93): 对getaddrinfo' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In function
pcap_nametonetaddr'的未定义引用: (.text+0xc4): 对getnetbyname' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In function
pcap_nametoport' 的未定义引用: (.text+0xee): 对getservbyname' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In function
pcap_nametoport' 的未定义引用: (.text+0x10f): 对getservbyname' U:/shutchinson/QNX/target/qnx6/x86/usr/lib\libpcap.a(nametoaddr.o): In function
pcap_nametoproto' 的未定义引用: (.text+0x251): 对 `getprotobyname' 的未定义引用
【问题讨论】:
也许你在链接时做错了什么。显示您正在运行的命令及其输出。 它为您提供了对 getifaddrs 的未定义引用,它不是 pcap 函数。也许您还需要链接到套接字库。 获得“未定义引用”的函数的完整列表是什么? (它确实找到了pcap_findalldevs()
,但pcap_findalldevs()
调用了getifaddrs()
,它没有找到getifaddrs()
。)
已编辑以添加完整列表。
@GreySag 那么您是否尝试链接到套接字库?那将是 -lsocket
标志(在链接到 pcap 库的任何标志之后)
【参考方案1】:
您必须将另一个库 (libsocket.a) 添加到链接器选项。 IE。您的链接器选项必须是....... -lpcap -lsocket。
【讨论】:
以上是关于QNX Neutrino 的 libpcap 库在哪里?的主要内容,如果未能解决你的问题,请参考以下文章