readelf与动态库

Posted foggia2004

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了readelf与动态库相关的知识,希望对你有一定的参考价值。

使用arm-linux-gcc编译的可执行文件可能会无法在开发板上执行,并提示:-/bin/sh xxx not found

解决办法:

在主机上使用readelf -d xxx 来查看该程序所需要的动态库,比如

[[email protected] key_device]# readelf -d app
Dynamic section at offset 0xf10 contains 25 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]  /* 可以得知执行需要libc.so.6库文件 */
 0x0000000c (INIT)                       0x8384
 0x0000000d (FINI)                       0x86a8

在交叉编译目录你搜索<find -name ‘libc.so.6‘>,然后将其拷贝到根文件系统的lib目录下即可.当然readelf后,需要多少库文件,就拷贝多少!

以上是关于readelf与动态库的主要内容,如果未能解决你的问题,请参考以下文章

linux下的静态库创建与查看,及如何查看某个可执行依赖于哪些动态库

ELF文件加载与动态链接

ELF文件加载与动态链接

linux下的静态库创建与查看,及如何查看某个可执行依赖于哪些动态库

patchelf 修改 rpath 以解决动态库问题

像 nm -D 或 readelf -s 一样,使用 python ctypes 列出动态符号?