编译net-snmp时libnl-3未被识别的问题求助
解决net-snmp编译时libnl-3头文件路径不匹配的问题
你遇到的问题是net-snmp的configure脚本默认期望libnl-3的头文件在/usr/include/netlink,但实际安装的包把文件放在了/usr/include/libnl3/netlink,以下是几个可行的解决方法:
方法一:configure时手动指定路径
运行configure命令时,显式指定libnl的头文件和库文件路径(64位系统库路径通常为/usr/lib/x86_64-linux-gnu,32位系统为/usr/lib):./configure --with-nl-includes=/usr/include/libnl3 --with-nl-libraries=/usr/lib/x86_64-linux-gnu执行完后清理旧编译文件并重新编译:
make clean && make方法二:配置pkg-config环境变量
先确认libnl的.pc配置文件位置(一般在/usr/lib/x86_64-linux-gnu/pkgconfig或/usr/share/pkgconfig下),设置环境变量让configure能自动读取正确路径:export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH之后重新运行configure和make即可。
方法三:创建全局软链接映射
使用root权限创建从程序期望路径到实际路径的软链接,直接匹配查找需求:sudo ln -s /usr/include/libnl3/netlink /usr/include/netlink完成后重新执行configure和make即可。
注意:如果之前已经执行过configure,必须先运行make clean清除旧配置缓存,否则新设置可能无法生效。
内容的提问来源于stack exchange,提问作者Gipsy Danger
相关产品推荐
相关产品推荐

