最近在搞机器上的wifi热点,需要移植一大堆东西,如hostapd\wpa_suppliant、dhcp等,这些玩意又依赖其他的一大堆库的移植,比如libnl,openssl等,今天在移植编译libnl-3.4.0出现报错“Relocations in generic ELF (EM: 40)”

详细log如下:

void@void-ThinkPad-E450:~$ tar -xvf libnl-3.4.0.tar.gz
void@void-ThinkPad-E450:~/libnl-3.4.0$ sudo mkdir /usr/local/arm/libnl3.4
void@void-ThinkPad-E450:~$ cd libnl-3.4.0/
void@void-ThinkPad-E450:~/libnl-3.4.0$ ./configure --host=arm-linux –prefix=/usr/local/arm/libnl3.4
void@void-ThinkPad-E450:~/libnl-3.4.0$ sudo make CC=/usr/local/arm/gcc-linaro/bin/arm-linux-gnueabi-gcc
CC lib/lib_libnl_3_la-addr.lo
CC lib/lib_libnl_3_la-attr.lo
CC lib/lib_libnl_3_la-cache.lo
CC lib/lib_libnl_3_la-cache_mngr.lo
CC lib/lib_libnl_3_la-cache_mngt.lo
CC lib/lib_libnl_3_la-data.lo
CC lib/lib_libnl_3_la-error.lo
CC lib/lib_libnl_3_la-handlers.lo
CC lib/lib_libnl_3_la-msg.lo
CC lib/lib_libnl_3_la-nl.lo
CC lib/lib_libnl_3_la-object.lo
CC lib/lib_libnl_3_la-socket.lo
CC lib/lib_libnl_3_la-utils.lo
CC lib/lib_libnl_3_la-version.lo
CC lib/lib_libnl_3_la-hash.lo
CC lib/lib_libnl_3_la-hashtable.lo
CC lib/lib_libnl_3_la-mpls.lo
CCLD lib/libnl-3.la
/usr/bin/ld: lib/.libs/lib_libnl_3_la-addr.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: lib/.libs/lib_libnl_3_la-addr.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: lib/.libs/lib_libnl_3_la-addr.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: lib/.libs/lib_libnl_3_la-addr.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: lib/.libs/lib_libnl_3_la-addr.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: lib/.libs/lib_libnl_3_la-addr.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: lib/.libs/lib_libnl_3_la-addr.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: lib/.libs/lib_libnl_3_la-addr.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: lib/.libs/lib_libnl_3_la-addr.o: Relocations in generic ELF (EM: 40)
lib/.libs/lib_libnl_3_la-addr.o: error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status
make: *** [lib/libnl-3.la] Error 1

经过查找资料,了解到应该是前后编译器不一样导致,因为在未设置交叉编译器之前我make过一次,失败之后再去配置的,所以只需要clean干净,然后统一用新的交叉编译器编译次即可

void@void-ThinkPad-E450:~/libnl-3.4.0$ ./configure --host=arm-linux --prefix=/usr/local/arm/libnl3.4 CC=/usr/local/arm/gcc-linaro/bin/arm-linux-gnueabi-gcc

void@void-ThinkPad-E450:~/libnl-3.4.0$ sudo make

void@void-ThinkPad-E450:~/libnl-3.4.0$ sudo make install
…........................................
Libraries have been installed in:
/usr/local/arm/libnl3.4/lib/libnl/cli/qdisc
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
- use the '-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
/bin/mkdir -p '/usr/local/arm/libnl3.4/etc/libnl'
/usr/bin/install -c -m 644 etc/pktloc etc/classid '/usr/local/arm/libnl3.4/etc/libnl'
make[1]: Leaving directory `/home/void/libnl-3.4.0'

如上则已经成功编译安装。

Relocations in generic ELF (EM: 40)的更多相关文章

  1. 异常之交叉编译---arm-vfp-linux-gnu/bin/ld: cgic.o: Relocations in generic ELF (EM: 3)

    /opt/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/l ...

  2. iperf linux版本移植到android (使用工具链方式不是使用Android.mk)

    由于很多程序是用makefile编译linux应用程序的,如果移植到android就要重新写Android.mk,对于不熟悉这个的人来说,特别麻烦,所以这里介绍只修改makefile就能移植到andr ...

  3. 交叉编译jpeglib遇到的问题

    由于要在开发板中加载libjpeg,不能使用gcc编译的库文件给以使用,需要自己配置使用另外的编译器编译该库文件. /usr/bin/ld: .libs/jaricom.o: Relocations  ...

  4. Linux编译移植Qt5的环境_OMAPL138平台

    Linux编译移植Qt5_OMAPL138 [导语]:昨天编译Qt5各种失败,各种离奇的错误在Google上面也搜索不到,真是让人"蛋疼菊紧",今天把所有的环境全部清理干净,也重新 ...

  5. Qt小结

    (1)#include 报错fatal error: QHostInfo:No such file or directory, 解决办法 在.pro文件中添加 QT += core gui netwo ...

  6. libnl的移植

    libnl简介 libnl是为了方便应用程序使用netlink接口而开发的一个库.这个库为原始netlink消息传递以及不同的netlink,family专用接口提供了一个统一的接口.libnl2.0 ...

  7. s5pv210编译qt

    undefined reference to `rpl_malloc' 编译tslib,执行make时提示undefined reference to `rpl_malloc' 是因为config.h ...

  8. opencv在arm和x86在移植

    一个.开发环境 操作系统:fedora14 Opencv版本号:2.0 Qt版本号:4.7 arm:mini6410 交叉编译工具:arm-linux-gcc-4.5.1 二.安装与配置 Linux系 ...

  9. linux下arm平台Qt编译环境搭建与解析

    一.概述:      我们知道QTcreator.这仅仅是个IDE,他包含了一个编译器--qmake.这两者的关系与codeblocks和g++的关系一样,首先要明确这些.      而我们在linu ...

随机推荐

  1. go案例:客户管理系统流程 mvc模式 分层设计

    下面是一个简要的客服系统,主要是演示分层计.. model : 数据部份: package model import "fmt" //声明一个结构体,表示一个客户信息 type C ...

  2. mac下使用vscode技巧

    1.查找 command +  F 2.查找并替换 选中要替换的文字  再 command +  options + F 3.竖状区域部分替换 鼠标点中替换字段的开头或者结尾,按options + s ...

  3. 使用PHP获取图像文件的EXIF信息

    在我们拍的照片以及各类图像文件中,其实还保存着一些信息是无法直观看到的,比如手机拍照时会有的位置信息,图片的类型.大小等,这些信息就称为 EXIF 信息.一般 JPG . TIFF 这类的图片文件都会 ...

  4. CentOS下安装libmcrypt失败

    libmcrypt是什么?? 是加密算法扩展库---支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SA ...

  5. webpack 安装与卸载

    全局安装(不推荐): npm install webpack webpack-cli -g 安装好后打印版本: webpack -v webpack-cli -v 卸载全局 npm uninstall ...

  6. js运行机制 值引用 值传递

    1.js是单线程的  为什么是单线程的呢  因为js作为浏览器脚本语言,会有很多和用户的互动,以及操作dom,多个线程会出问题. 2.js有同步任务,异步任务(ajax,用户点击等,settimeou ...

  7. P3480-[POI2009]KAM-Pebbles【阶梯博弈】

    正题 题目链接:https://www.luogu.com.cn/problem/P3480 题目大意 \(n\)个石头堆上进行\(\text{Nim}\)游戏,不过需要满足每次操作前后都有\(a_i ...

  8. sessionId在小程序中的妙用

    前言:小程序发送短信验证码需要在后台储存生成的code,一次会话应放入session中,请求头部发送sessionId验证为同一session 1.页面一加载就从后台获取sessionId,储存在本地 ...

  9. Spring,AOP实现功能级别权限验证

    1. 首先是问题出现的原因 对于一个我的一个个人博客网站,我希望游客可以浏览我的博客,但是评论功能是需要登录才能使用 这就需要对某个功能进行权限验证 对于过滤器,拦截器,AOP的区别日后再讨论,现在是 ...

  10. go语言游戏服务端开发(四)——RPC机制

    五邑隐侠,本名关健昌,12年游戏生涯. 本教程以Go语言为例. RPC指远程方法调用,游戏里引入RPC目的是降低跨进程交互的复杂度. 游戏业务设计为多go routine,一个玩家一个go routi ...