标签: elf

确定Linux二进制文件的直接共享对象依赖项?

如何轻松找出ELF格式的Linux二进制文件的直接共享对象依赖项?

我知道ldd工具,但似乎输出了二进制文件的所有依赖项,包括二进制文件所依赖的任何共享对象的依赖项.

linux elf

156
推荐指数
4
解决办法
16万
查看次数

如何使用GMP,MPFR,MPC,ELF逐个安装GCC,无需共享库?

如何使用当前版本,
使用正确版本的依赖项,而不是使用包管理器(如yum,rpm,apt,dpkg),而不是使用共享库,逐个安装GCC(GNU编译器集合)?

典型的开发人员可能希望以典型的方式安装GCC,使用您的包管理器(yum,rpm,apt,dpkg,port,brew等)或按照此处的说明进行操作(http://gcc.gnu.org/wiki/ InstallingGCC).

我的问题是如何一块一块地安装GCC,没有共享库.

  • 我想要一个完全独立的GCC,可以在不使用任何共享库的情况下在我的系统中移动,而无需创建任何共享库.
  • 这就是GCC所说的"困难之路",不建议普通用户使用.

GCC取决于:

  • GMP:GNU多精度算术库
  • MPFR:GNU多精度浮点舍入库
  • MPC:GNU多精度C库
  • ELF:可执行和可链接格式库
  • PPL:Parma Polyhedra库(可选,用于内存优化)

gcc elf mpfr gmp mpc

111
推荐指数
5
解决办法
10万
查看次数

ELF文件和bin文件有什么区别?

编译器生成的最终图像包含bin文件和扩展加载器格式ELf文件,两者之间有什么区别,尤其是ELF文件的实用程序.

arm elf

89
推荐指数
3
解决办法
8万
查看次数

使用GCC的C/C++:静态地将资源文件添加到可执行文件/库

有没有人知道如何使用GCC将任何资源文件静态编译到可执行文件或共享库文件中?

例如,我想添加永远不会改变的图像文件(如果他们这样做,我不得不替换文件),并且不希望它们在文件系统中存在.

如果这是可能的(我认为这是因为Visual C++ for Windows也可以这样做),我如何加载存储在自己的二进制文件中的文件?可执行文件是否解析自身,找到文件并从中提取数据?

也许GCC有一个选项,我还没有见过.使用搜索引擎并没有真正吐出正确的东西.

我需要这个用于共享库和普通的ELF可执行文件.

任何帮助表示赞赏

c++ linux gcc shared-libraries elf

88
推荐指数
7
解决办法
6万
查看次数

我可以在已编译的二进制文件中更改"rpath"吗?

我有一个旧的可执行文件,它被安排在废料堆中,但它还没有.它依赖于从我的环境中删除的一些库,但我在某些地方工作正常.我想将此可执行文件指向这些存根库.是的,我可以设置LD_LIBRARY_PATH,但是这个可执行文件是从许多脚本中调用的,很多用户和我都喜欢在一个地方修复它.

我没有这方面的来源,并且很难得到它.我在想 - 我可以使用ELF识别编辑器编辑这个文件,并在rpath中添加一个简单的PATH以使其命中新的库吗?这是可能的,或者一旦你创建了一个ELF二进制文件,你就把东西固定到位置并且它们不能移动?

linux linker elf

81
推荐指数
3
解决办法
5万
查看次数

运行节点应用程序时bcrypt无效的elf标头

我正在为学校开展一个nodejs项目.我无法用npm安装bcrypt所以我安装了bcrypt-nodejs并且该项目昨天工作正常.但今天,当我做"节点应用程序"时,我有这个错误:

/.../node_modules/bcrypt/node_modules/bindings/bindings.js:79
        throw e
              ^
Error: /.../node_modules/bcrypt/build/Release/bcrypt_lib.node: invalid ELF header
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at bindings (/.../node_modules/bcrypt/node_modules/bindings/bindings.js:74:15)
    at Object.<anonymous> (/.../node_modules/bcrypt/bcrypt.js:1:97)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
Run Code Online (Sandbox Code Playgroud)

我的package.json文件如下所示:

{
  "name": "Supinfarm",
  "version": "0.0.0",
  "env": {
              "PYTHON": "/usr/bin/python2.6"
        },
  "dependencies": {
    "express": "3.1.0",
    "connect-flash": "*",
    "jade": "*",
    "stylus": "*",
    "passport": "*",
    "passport-local": "*",
    "mongoose": "*",
    "bcrypt": "*"
  }
}
Run Code Online (Sandbox Code Playgroud)

我在Linux上ubuntu 10.04 LTS我试图在google上找到解决方案但没有成功......有人可以帮助我吗?

elf bcrypt node.js

74
推荐指数
7
解决办法
4万
查看次数

如何使用objdump反汇编一个函数?

我的系统上安装了二进制文件,并希望查看给定函数的反汇编.优选使用objdump,但其他解决方案也是可以接受的.

这些问题我已经了解到,如果我只知道边界地址,我可能能够反汇编部分代码.从这个答案我已经学会了如何将我的拆分调试符号转换回单个文件.

但即使在单个文件上运行,甚至反汇编所有代码(即没有启动或停止地址,但只是简单的-d参数objdump),我仍然没有在任何地方看到该符号.这是有道理的,因为有问题的函数是静态的,所以它不会被导出.然而,valgrind将报告函数名称,因此它必须存储在某处.

查看调试部分的详细信息,我找到了本.debug_str节中提到的名称,但我不知道可以将其转换为地址范围的工具.

elf debug-symbols objdump disassembly dwarf

71
推荐指数
5
解决办法
5万
查看次数

'int main(){return(0);上的浮点异常(SIGFPE); }"

我正在尝试为两个不同的Linux环境构建一个简单的C程序.在一个设备上程序运行正常,在另一个设备上程序生成浮点异常.该程序什么都不做,但从main返回0,这让我相信可能与启动代码ABI有一些不兼容?

该程序使用gcc编译,具有以下构建规范:

使用内置规格.目标:i386-redhat-linux配置:../ configure --prefix =/usr --mandir =/usr/share/man --infodir =/usr/share/info --enable-shared --enable-threads = posix --enable-checking = release --with-system-zlib --enable -__ cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages = c,c ++,objc,obj-c ++ ,java,fortran,ada --enable-java-awt = gtk --disable-dssi --disable-plugin --with-java-home =/usr/lib/jvm/java-1.4.2-gcj-1.4. 2.0/jre --with-cpu = generic --host = i386-redhat-linux线程模型:posix gcc版本4.1.2 20080704(Red Hat 4.1.2-52)

程序源如下:

int main()
{
        return(0);
}
Run Code Online (Sandbox Code Playgroud)

在Celeron设备上,该程序在GDB下生成以下内容:

[root@n00200C30AA2F jrn]# /jrn/gdb fail GNU gdb Red Hat Linux (5.3post-0.20021129.18rh) (gdb) run Starting program: /jrn/fail 

Program received signal SIGFPE, Arithmetic exception. 0x40001cce in ?? () (gdb) …
Run Code Online (Sandbox Code Playgroud)

c linux gcc elf sigfpe

70
推荐指数
1
解决办法
6040
查看次数

如何检索用于编译给定ELF可执行文件的GCC版本?

我想检索用于编译给定可执行文件的GCC版本.我试过readelf但没有得到这些信息.有什么想法吗?

gcc elf

67
推荐指数
4
解决办法
4万
查看次数

如何在Linux上检查ELF文件的数据部分的内容?

我一直在使用objdumpLinux ELF二进制文件中的汇编代码.

有时会通过存储在rodata(只读数据)部分中的跳转表进行间接跳转.

如何获取objdump或任何其他工具向我显示此数据部分的内容?

我可以执行程序并检查调试器中的相关地址,但我不想这样做,因为它必须以交互方式完成.

理想的答案将确定一个工具,不仅可以向我显示内容,还可以让我控制显示格式od.

linux elf object-code objdump

66
推荐指数
3
解决办法
8万
查看次数

标签 统计

elf ×10

linux ×5

gcc ×4

objdump ×2

arm ×1

bcrypt ×1

c ×1

c++ ×1

debug-symbols ×1

disassembly ×1

dwarf ×1

gmp ×1

linker ×1

mpc ×1

mpfr ×1

node.js ×1

object-code ×1

shared-libraries ×1

sigfpe ×1