编译一个能在 arm 平台上用的动态库,结果报错如下:
relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
./obj/xxx.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
其实错误信息已经给出解决办法了,加...
分类:
其他好文 时间:
2014-11-21 18:40:09
阅读次数:
3187
如果想运行和链接地址不一致,我能想到的办法,只能是汇编中尽量不去涉及一些绝对地址,使用PIC位置无关代码。
联想之前分析的uboot relocation原理,uboot在relocation之后,kernel在开启MMU之前,都实现了链接地址和运行地址不一致,看看它们用的什么方法?
(1)uboot在relocation时修改rel.dyn段(存储所有变量地址),实现将所有变量地址重定位到新运行地址
(2)kernel在开启MMU之前,计算运行地址(物理地址)与链接地址(虚拟地址)的偏移,对变量寻址时都进...
分类:
系统相关 时间:
2014-11-21 10:43:07
阅读次数:
367
/usr/local/lib/libz.a: could not read symbols: Bad value(64 位 Linux)/usr/bin/ld: /usr/local/lib/libz.a(crc32.o): relocation R_X86_64_32 against `a loc...
分类:
系统相关 时间:
2014-11-13 16:21:00
阅读次数:
297
问题引入:Linux的elf文件一开始理解起来的确很难,有的人可能会去看《linkersandloaders》,这书的确好,但是没有详细的解释很多细节,尤其是从汇编语言视角。我读了这本书很多地方后还是不明白,然后我又读了IBM360计算机的汇编器设计文档,里面详解了二次扫描汇编器的设计原..
分类:
编程语言 时间:
2014-11-01 06:28:29
阅读次数:
225
题目链接:http://poj.org/problem?id=2923题目的大概意思是,有两辆车a和b,a车的最大承重为A,b车的最大承重为B。有n个家具需要从一个地方搬运到另一个地方,两辆车同时开,问最少需要搬运几次?我先想的是我由A车开始搬,搬运能装的最大的家具总重,然后状态压缩记录下搬运了哪些...
分类:
其他好文 时间:
2014-10-20 19:07:01
阅读次数:
237
[root@diguojinhttpd-2.4.10]#uname-a
Linuxdiguojin2.6.32-431.el6.x86_64#1SMPFriNov2203:15:09UTC2013x86_64x86_64x86_64GNU/Linux
[root@diguojinhttpd-2.4.10]#uname-r
2.6.32-431.el6.x86_64
[root@diguojinhttpd-2.4.10]#64为centos6.5版本,编译Apache2.40时出错Apache..
分类:
Web程序 时间:
2014-10-11 17:00:56
阅读次数:
303
题目链接:http://poj.org/problem?id=2923题目意思:给出两部卡车能装的最大容量,还有n件物品的分别的weight。问以最优方式装入,最少能运送的次数是多少。 二进制表示物品状态:0表示没运走,1表示已被运走。 枚举出两辆车一趟可以运出的状态。由于物品是一趟一趟运出来的.....
分类:
其他好文 时间:
2014-08-07 00:39:17
阅读次数:
294
Description
Emma and Eric are moving to their new house they bought after returning from their honeymoon. Fortunately, they have a few friends helping them relocate. To move the furniture, they onl...
分类:
其他好文 时间:
2014-08-02 18:26:23
阅读次数:
312
在之前我们移植的代码中,都没看到明显的效果,这节我们实现控制台的打印信息。
在上节,我们看到调用 relocate_code 重定位。在 u-boot 的帮助文档 doc/README.arm-relocation 中对重定位有说明。u-boot 为了生成位置无关码,在链接时指定了-pie 选项,这个选项在 u-boot-2014.04/arch/arm/config.mk 中指定:
...
分类:
其他好文 时间:
2014-07-22 14:07:14
阅读次数:
275
gcc -shared -o hack.so hack.c/usr/bin/ld: /tmp/ccUZREwA.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object...
分类:
其他好文 时间:
2014-07-14 19:26:29
阅读次数:
1539