编译hostapd时,出现错误:/usr/bin/ld: cannot find -lnl
book@ubuntu:/work/project/wifi/04.hostapd/hostapd-2.0/hostapd$ make
/usr/bin/ld: cannot find -lnl
collect2: ld returned 1 exit status
make: *** [hostapd] Error 1
问题原因是,没有找到 nl 库 !
然后我搜索 这个 nl 库是在哪儿被使用的:
book@ubuntu:/work/project/wifi/04.hostapd/hostapd-2.0$ grep "\-lnl" * -nR
src/drivers/drivers.mak:31: DRV_LIBS += -lnl-3
src/drivers/drivers.mak:32: DRV_LIBS += -lnl-genl-3
src/drivers/drivers.mak:36: DRV_LIBS += -lnl-tiny
src/drivers/drivers.mak:38: DRV_LIBS += -lnl
src/drivers/drivers.mak:42: DRV_LIBS += -lnl-genl
src/drivers/drivers.mak:148: DRV_LIBS += -lnl-3
src/drivers/drivers.mak:149: DRV_LIBS += -lnl-genl-3
src/drivers/drivers.mak:150: DRV_LIBS += -lnl-route-3
src/drivers/drivers.mak:154: DRV_LIBS += -lnl-tiny
src/drivers/drivers.mak:156: DRV_LIBS += -lnl
src/drivers/drivers.mak:160: DRV_LIBS += -lnl-genl
src/drivers/drivers.mak:161: DRV_LIBS += -lnl-route
src/drivers/drivers.mk:31: DRV_LIBS += -lnl-3
src/drivers/drivers.mk:32: DRV_LIBS += -lnl-genl-3
src/drivers/drivers.mk:36: DRV_LIBS += -lnl-tiny
src/drivers/drivers.mk:38: DRV_LIBS += -lnl
src/drivers/drivers.mk:42: DRV_LIBS += -lnl-genl
src/drivers/drivers.mk:152: DRV_LIBS += -lnl-3
src/drivers/drivers.mk:153: DRV_LIBS += -lnl-genl-3
src/drivers/drivers.mk:154: DRV_LIBS += -lnl-route-3
src/drivers/drivers.mk:158: DRV_LIBS += -lnl-tiny
src/drivers/drivers.mk:160: DRV_LIBS += -lnl
src/drivers/drivers.mk:164: DRV_LIBS += -lnl-genl
src/drivers/drivers.mk:165: DRV_LIBS += -lnl-route
然后,我们查看交叉编译库里 有没有 nl 的库
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
然后,发现里面有这个库。
book@ubuntu:/work/project/wifi/04.hostapd/hostapd-2.0$ ls /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
engines libnl libnsl.so.1
jconfig.h libnl-3.a libnss_compat-2.8.so
jerror.h libnl-3.la libnss_compat.so.2
jmorecfg.h libnl-3.so libnss_dns-2.8.so
jpeglib.h libnl-3.so.200 libnss_dns.so.2
ld-2.8.so libnl-3.so.200.18.0 libnss_files-2.8.so
ld-linux.so.3 libnl-cli-3.a libnss_files.so.2
libanl-2.8.so libnl-cli-3.la libnss_hesiod-2.8.so
libanl.so.1 libnl-cli-3.so libnss_hesiod.so.2
libBrokenLocale-2.8.so libnl-cli-3.so.200 libnss_nis-2.8.so
libBrokenLocale.so.1 libnl-cli-3.so.200.18.0 libnss_nisplus-2.8.so
libc-2.8.so libnl-genl-3.a libnss_nisplus.so.2
libcidn-2.8.so libnl-genl-3.la libnss_nis.so.2
libcidn.so.1 libnl-genl-3.so libpcprofile.so
libcrypt-2.8.so libnl-genl-3.so.200 libpthread-2.8.so
libcrypto.a libnl-genl-3.so.200.18.0 libpthread.so.0
libcrypto.so libnl-idiag-3.a libresolv-2.8.so
libcrypto.so.1.0.0 libnl-idiag-3.la libresolv.so.2
libcrypt.so.1 libnl-idiag-3.so librt-2.8.so
libc.so.6 libnl-idiag-3.so.200 librt.so.1
libdl-2.8.so libnl-idiag-3.so.200.18.0 libSegFault.so
libdl.so.2 libnl-nf-3.a libssl.a
libfreetype.a libnl-nf-3.la libssl.so
libfreetype.la libnl-nf-3.so libssl.so.1.0.0
libfreetype.so libnl-nf-3.so.200 libthread_db-1.0.so
libfreetype.so.6 libnl-nf-3.so.200.18.0 libthread_db.so.1
libfreetype.so.6.9.0 libnl-route-3.a libutil-2.8.so
libgcc_s.so libnl-route-3.la libutil.so.1
libgcc_s.so.1 libnl-route-3.so libz.a
libm-2.8.so libnl-route-3.so.200 pkgconfig
libmemusage.so libnl-route-3.so.200.18.0 turbojpeg.h
libm.so.6 libnsl-2.8.so
那么原因就出在 src/drivers/drivers.mak 里了! 肯定是编译时,-lnl-3 库没有包含进来。
然后,打开这个文件。
vi src/drivers/drivers.mk +31
发现下面这几句。
ifdef CONFIG_LIBNL32
DRV_LIBS += -lnl-3
DRV_LIBS += -lnl-genl-3
DRV_CFLAGS += -DCONFIG_LIBNL20 -I/usr/include/libnl3
那么我们只需要,在配置文件.config里,加 CONFIG_LIBNL32 = y 就可以了。
编译hostapd时,出现错误:/usr/bin/ld: cannot find -lnl的更多相关文章
- 编译cuda Examples 时出现错误:/bin/ld cannot find -lglut
编译cuda Examples 时出现错误:/bin/ld cannot find -lglut ,可以先找找是否缺少库,有时候可能是symbolic link不正确,没有链接到正确位置,导致找不到库 ...
- 【转】链接任意目录下库文件(解决错误“/usr/bin/ld: cannot find -lxxx”
netbeans构建项目也出现了同样的问题.猜测是netbeans内部就用的是-l 这种编译方式,所以需要把***.a手动改为lib***.a 原文地址:链接任意目录下库文件(解决错误“/usr/bi ...
- android编译错误--/usr/bin/ld: cannot find -lz
编译时出现/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when se ...
- make -f dc_debug.mak 提示错误"/usr/bin/ld:can not find -l***"解决办法
在公司不同服务器上"make -f ***"程序的时候,有的服务器可以编译通过,有的却提示"/usr/bin/ld:can not find -l***"的错误 ...
- 编译错误 ----- /usr/bin/ld: cannot find -lc
yum install glibc-static glib-static是Gcc链接时使用到的库.
- NTP服务编译安装报错:/usr/bin/ld: cannot find –lcap
[root@localhost local]# find / -name "*libcap.so*" [root@localhost ntp-4.2.8p13]# cd /usr/ ...
- 编译错误:/usr/bin/ld: cannot find -lz
编译时出现错误/usr/bin/ld: cannot find -lz,安装zlib和zlib-devel yum install zlib yum install zlib-devel
- usr/bin/ld: cannot find 错误解决方法
参考:http://blog.siyebocai.cn/20100324_5p424qs7.html 通常在软件编译时出现的usr/bin/ld: cannot find -lxxx的错误,主要的原因 ...
- usr/bin/ld: cannot find 错误解决方法和 /etc/ld.so.conf
我makefile出现这个错误: HelloWorldServer.c:(.text+0xaa): undefined reference to `zmq_send'collect2: error: ...
随机推荐
- 20165202 实验一 Java开发环境的熟悉
一.实验内容及步骤 (一)使用JDK编译.运行简单的Java程序 建立"自己学号exp1"的目录 mkdir 20165202exp1 进入目录 cd 20165202exp1 在 ...
- linux系统编程-进程
进程 现实生活中 在很多的场景中的事情都是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的: 如下是一段视频,迈克杰克逊的一段视频: http://v.youku.com ...
- SAP NetWeaver Business Client (NWBC) 简介
1.NWBC 简介 SAP NetWeaver Business Client (NWBC) 是新一代SAP用户界面,集成了SAPGUI事务和新的web dynpro应用,类似于桌面应用程序. SAP ...
- 访问路径、URL、资源加载、转码、 btn的设置、枚举
一.URL 1.什么是URL? URL是某个资源的唯一路径,通过这个路径就能访问对应的资源 2.URL的组成 协议头://全路径 * 协议头就代表资源的类型,比如http代表网络服务器资源,ftp代表 ...
- 7.翻转句子中单词的顺序[ReverseWordOrderInSentence]
[题目] 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入“I am a student.”,则输出“stud ...
- JVM原理三-----GC模块,垃圾回收
GC方法:在JVM启动时填入参数(比如:-XX:+UseConcMarkSweepGC ) 算法区分: 1.古老回收算法: Reference Counting ,对象有一个引用,即增加一个计数,删 ...
- 每天一个linux命令(权限):【转载】chmod命令
chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. Linux系统中的每 ...
- BZOJ2820 YY的GCD 【莫比乌斯反演】
BZOJ2820 YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, ...
- Docker环境下eShopOnContainers部署
从头开始学eShopOnContainers--Visual Studio 2017环境配置 https://www.cnblogs.com/dusthunter/p/9973815.html 一.安 ...
- 在 ubuntu 中安装 python3.5 tornado pymysql
一.在 ubuntu 中安装 python3.5 1.首先,在系统中是自带python2.7的.不要卸载,因为一些系统的东西是需要这个的.python2.7和python3.5是可以共存的. 命令如下 ...