“ldd: not a dynamic executable”错误意味着你尝试使用 ldd 命令来分析一个不是动态可执行(或者不是动态链接库)的文件。ldd 命令专门用于列出动态可执行文件或动态链接库(如 .so 文件)所依赖的共享库。 2. 常见原因 文件不是 ELF 格式的动态可执行文件:ldd 只能处理 ELF 格式的动态可执行文件和动态链接库。
如果程序是交叉编译的,生成的程序可能在本机ldd时看不到依赖库。 可以执行下面命令,看其依赖项: readelf -d your_exe | grep NEEDED
如果运行ldd命令时没有输出任何结果,则说明该可执行文件或共享库文件没有任何依赖项。 3. ldd命令显示“not a dynamic executable”: 这可能是因为指定的文件不是一个可执行文件,而是一个静态库文件或其他类型的文件。需要确保ldd命令用于分析的文件是可执行文件或共享库文件。 总结: ldd命令是一个在Linux系统下常...
1. ldd命令:ldd命令可以用来查看一个可执行文件所依赖的共享库。对于静态库,ldd命令会显示“not a dynamic executable”的错误信息。可以使用以下命令来使用ldd命令: $ ldd <可执行文件> 2. nm命令:nm命令可以用来列出一个目标文件或者静态库中的符号表。符号表中包含了这个目标文件或者静态库所定义和引用的符号。
你可以通过两种方式来完成这项工作:通过创建一个 静态(static) 库或 一个 动态(dynamic) 库(也被称为 共享(shared) 库)。从创建和链接的方式来看,它们是两种不同类型的库。选择使用哪种方式取决于你的的具体场景。 在linux.cn 中,我演示了如何创建一个动态链接的可执行文件,这是一种更通用的方法。在这篇文...
not a dynamic executable //说明没有链接动态库 链接器链接后生成的最终文件为ELF格式可执行文件,一个ELF可执行文件通常被链接为不同的段,常见的段譬如.text、.data、.rodata、.bss等段。 分析ELF文件 1.ELF文件的段 ELF文件格式如下图所示,位于ELF Header和Section Header Table之间的都是段(Section)。一个...
a.out: linux-gate.so.1 => (0x00ba1000) libc.so.6 => /lib/libc.so.6 (0x0087e000) /lib/ld-linux.so.2 (0x00858000) main.c: ldd: warning: you do not have execution permission for `./main.c' not a dynamic executable main.o: ...
$ file mathDemo mathDemo: ELF 64-bit LSB executable, x86-64... statically linked, with debug_info, not stripped 使用ldd 命令,你将会看到该可执行文件不是动态链接的: $ ldd ./mathDemo not a dynamic executable 你也可以查看 mathDemo 可执行文件的大小: $ du -h ./mathDemo 932K ./mathDemo...
执行该命令后,LDD会列出该可执行文件所依赖的所有动态链接库文件的绝对路径。通常,输出结果会以“动态链接库名 => 动态链接库路径”格式进行显示。如果某个程序未指定动态链接库路径,LDD会显示“not a dynamic executable”。 通过LDD命令,我们可以确定一个程序是否存在库依赖问题,如果存在,则可以采取相应措施解决。常...
(使用Binutils的size命令查看)和链接的动态库(使用Binutils的ldd命令查看)如下所示: $ gcc -static hello.c -o hello $ size hello //使用size查看大小 text data bss dec hex filename 823726 7284 6360 837370 cc6fa hello //可以看出text的代码尺寸变得极大 $ ldd hello not a dynamic executable //说明...