编译出错Relocations in generic ELF (EM: 62)

本文记录了一次交叉编译libnl时遇到的错误及其解决过程。问题源于预编译的libnl.a静态库与目标平台不匹配,通过删除错误的库文件并重新编译解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在交叉编译libnl的时候,出错了,信息如下:

编译出错

aarch64-linux-gnu-gcc -L/mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib --static  -o wpa_supplicant config.o notify.o bss.o eap_register.o ../src/utils/common.o ../src/utils/wpa_debug.o ../src/utils/wpabuf.o wmm_ac.o ../src/utils/os_unix.o ../src/utils/eloop.o config_file.o ../src/rsn_supp/wpa.o ../src/rsn_supp/preauth.o ../src/rsn_supp/pmksa_cache.o ../src/rsn_supp/peerkey.o ../src/rsn_supp/wpa_ie.o ../src/common/wpa_common.o ../src/eap_peer/eap_tls.o ../src/eap_peer/eap_peap.o ../src/eap_common/eap_peap_common.o ../src/eap_peer/eap_ttls.o ../src/eap_peer/eap_md5.o ../src/eap_peer/eap_mschapv2.o ../src/eap_peer/mschapv2.o ../src/eap_peer/eap_gtc.o ../src/eap_peer/eap_otp.o ../src/eap_peer/eap_leap.o ../src/eapol_supp/eapol_supp_sm.o ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o ../src/crypto/ms_funcs.o ../src/eap_common/chap.o ../src/eap_peer/eap_tls_common.o ../src/crypto/tls_openssl.o ../src/crypto/tls_openssl_ocsp.o ../src/crypto/crypto_openssl.o    ../src/crypto/sha256-prf.o ../src/crypto/sha256-tlsprf.o ../src/crypto/random.o ../src/common/ctrl_iface_common.o ctrl_iface.o ctrl_iface_unix.o  ../src/utils/base64.o sme.o ../src/common/ieee802_11_common.o ../src/common/hw_features_common.o ../src/eap_common/eap_common.o ../src/crypto/sha1-prf.o ../src/crypto/sha1-tlsprf.o  ../src/drivers/driver_common.o wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o main.o  ../src/drivers/driver_wext.o  ../src/drivers/driver_wired.o ../src/drivers/driver_nl80211.o ../src/drivers/driver_nl80211_capa.o ../src/drivers/driver_nl80211_event.o ../src/drivers/driver_nl80211_monitor.o ../src/drivers/driver_nl80211_scan.o ../src/drivers/netlink.o ../src/drivers/linux_ioctl.o ../src/drivers/rfkill.o ../src/utils/radiotap.o ../src/drivers/drivers.o ../src/l2_packet/l2_packet_linux.o -L/mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib -lrt   -lnl -lssl -lcrypto -ldl  
/opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/../lib/gcc/aarch64-linux-gnu/4.9.2/../../../../aarch64-linux-gnu/bin/ld: /mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib/libnl.a(family.o): Relocations in generic ELF (EM: 62)
/opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/../lib/gcc/aarch64-linux-gnu/4.9.2/../../../../aarch64-linux-gnu/bin/ld: /mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib/libnl.a(family.o): Relocations in generic ELF (EM: 62)
/opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/../lib/gcc/aarch64-linux-gnu/4.9.2/../../../../aarch64-linux-gnu/bin/ld: /mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib/libnl.a(family.o): Relocations in generic ELF (EM: 62)
/opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/../lib/gcc/aarch64-linux-gnu/4.9.2/../../../../aarch64-linux-gnu/bin/ld: /mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib/libnl.a(family.o): Relocations in generic ELF (EM: 62)
/opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/../lib/gcc/aarch64-linux-gnu/4.9.2/../../../../aarch64-linux-gnu/bin/ld: /mnt/nfsroot/frankyu/android-O/factorytest/wifi/out/lib/libnl.a(family.o): Relocations in generic ELF (EM: 62)
/opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/../lib/gcc/aarch64-linux-gnu/4.9.2/../../../../aarch64-linux-gnu/bin/ld: /mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib/libnl.a(family.o): Relocations in generic ELF (EM: 62)
/opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/../lib/gcc/aarch64-linux-gnu/4.9.2/../../../../aarch64-linux-gnu/bin/ld: /mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib/libnl.a(family.o): Relocations in generic ELF (EM: 62)
/mnt/nfsroot/frank.yu/android-mbr-p212/factorytest/wifi/out/lib/libnl.a: error adding symbols: File in wrong format

错误信息是:libnl.a(family.o): Relocations in generic ELF (EM: 62)
通过查看静态库libnl.a中的文件 family.o, 发现elf64-x86-64,这个真是奇怪了

objdump -a libnl.a

cache.o:     file format elf64-little
rw-r--r-- 9150/8000  79640 Apr 14 12:01 2018 cache.o

family.o:     file format elf64-little
rw-r--r-- 9150/8000  14912 Apr 14 12:01 2018 family.o

family.o:     file format elf64-x86-64
rw-rw-r-- 1000/1000  42176 Dec 20 19:33 2012 family.o

nl.o:     file format elf64-little
rw-r--r-- 9150/8000  51840 Apr 14 12:01 2018 nl.o

重新解压了一个libnl-1.1.4.tar.gz,发现没有任何编译,lib目录竟然存在libnl.a, 原来是源码的上传者,使用的是x86-64的交叉编译器编译生成的libnl.a, 然后上传了。这样导致我这边出错了,然后把libnl.a删除了,重新编译就没有报错了。
rm lib/libnl.a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值