本文目录一览

1,怎么连接带版本号的so文件

方法一: 文件名已经带有版本号: 这种情况下很容易就能够看到软链指向的文件的版本号是 1.0.1 方法二: 当文件名不带版本号时:如下所示 使用readelf -a ***.so读取出文件的版本号,不过此时只能读取到主版本号
建一个软连接指向libmysqlclient.so.18就好ln -s libmysqlclient.so.18 libmysqlclient.so.16路径这里就不写了

怎么连接带版本号的so文件

2,统计linux下elf 指令数

编个脚本你执行下执行#!/usr/bin/shset -xhello.elf>>hello.logTOTAL=`cat hello.log|wc -l`echo $TOTALrm hello.log你按我的这个执行以下试试
呵呵 骑驴找驴 linux下的可执行文件和共享库都是elf格式。明白了吗? 你可以用readelf,objdump查看elf文件格式 elf问文件格式 其对*.out *.o *.a 的关系 就想到于pe对于*.exe , *.dll 的关系一样。这是常识,再常识上出错,别人会笑话你阿。

统计linux下elf 指令数

3,如何知道电脑的栈空间大小

如果是gcc/linux的可执行文件,先用readelf看:1、$ readelf -l /bin/ls2、...3、 Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align4、...5、GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x46、...如果MemSiz为零,则由OS决定栈的大小。1、$ ulimit -a | grep stack2、stack size (kbytes, -s) 8192可以看到OS设定的值是8MB编译时改变stack大小的方法:ld --stack=栈尺寸或gcc -Wl,--stack=栈尺寸例如 gcc -Wl,--stack=0x4000000
您好,如果是gcc/linux的可执行文件,先用readelf看:1、$ readelf -l /bin/ls2、...3、 Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align4、...5、GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x46、...如果MemSiz为零,则由OS决定栈的大小

如何知道电脑的栈空间大小

4,如何使用linuxgnureadelf查看头文件

可执行文件里都是机器码加一些调试信息,看不到头文件信息的。你说的生成包含头文件的列表确实是有,是gcc的选项,-M,必须在编译时给出。比如说你要看temp.c应用了什么头文件,可以如下使用:$ gcc -M -c temp.c temp.o: temp.c /usr/include/stdio.h /usr/include/features.h \ /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h \ /usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h \ /usr/include/bits/types.h /usr/include/bits/typesizes.h \ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ /usr/include/bits/wchar.h /usr/include/gconv.h \ /usr/lib/gcc/i386-redhat-linux/4.1.1/include/stdarg.h \ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h它还有几个子选项,-MM等,可以自己man gcc看看。

5,armlinuxreadelf 在哪

可执行文件里都是机器码加一些调试信息,看不到头文件信息的。你说的生成包含头文件的列表确实是有,是gcc的选项,-m,必须在编译时给出。比如说你要看temp.c应用了什么头文件,可以如下使用:$ gcc -m -c temp.c temp.o: temp.c /usr/include/stdio.h /usr/include/features.h \ /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h \ /usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h \ /usr/include/bits/types.h /usr/include/bits/typesizes.h \ /usr/include/libio.h /usr/include/_g_config.h /usr/include/wchar.h \ /usr/include/bits/wchar.h /usr/include/gconv.h \ /usr/lib/gcc/i386-redhat-linux/4.1.1/include/stdarg.h \ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h它还有几个子选项,-mm等,可以自己man gcc看看。
arm-linux-readelf 在哪我也在玩arm,呵呵,gcc包含其他2个了再装是为了更新1) gcc(gnu collect compiler)是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的 运行库的支持,如libgcc_s.so、libstdc++.so等。

6,如何查看elf文件调用了哪些库函数

在 readelf 的输出中:第 1 行,ELF Header: 指名 ELF 文件头开始。第 2 行,Magic 魔数,用来指名该文件是一个 ELF 目标文件。第一个字节 7F 是个固定的数;后面的 3 个字节正是 E, L, F 三个字母的 ASCII 形式。第 3 行,CLASS 表示文件类型,这里是 32位的 ELF 格式。第 4 行,Data 表示文件中的数据是按照什么格式组织(大端或小端)的,不同处理器平台数据组织格式可能就不同,如x86平台为小端存储格式。第 5 行,当前 ELF 文件头版本号,这里版本号为 1 。第 6 行,OS/ABI ,指出操作系统类型,ABI 是 Application Binary Interface 的缩写。第 7 行,ABI 版本号,当前为 0 。第 8 行,Type 表示文件类型。ELF 文件有 3 种类型,一种是如上所示的 Relocatable file 可重定位目标文件,一种是可执行文件(Executable),另外一种是共享库(Shared Library) 。第 9 行,机器平台类型。第 10 行,当前目标文件的版本号。第 11 行,程序的虚拟地址入口点,因为这还不是可运行的程序,故而这里为零。第 12 行,与 11 行同理,这个目标文件没有 Program Headers。第 13 行,sections 头开始处,这里 208 是十进制,表示从地址偏移 0xD0 处开始。第 14 行,是一个与处理器相关联的标志,x86 平台上该处为 0 。第 15 行,ELF 文件头的字节数。第 16 行,因为这个不是可执行程序,故此处大小为 0。第 17 行,同理于第 16 行。第 18 行,sections header 的大小,这里每个 section 头大小为 40 个字节。第 19 行,一共有多少个 section 头,这里是 8 个。第 20 行,section 头字符串表索引号,从 Section Headers 输出部分可以看到其内容的偏移在 0xa0 处,从此处开始到0xcf 结束保存着各个 sections 的名字,如 .data,.text,.bss等。 在 Section Headers 这里,可以看到 .bss 和 .shstrtab 的偏移都为 0xa0 。这是因为,没有被初始化的全局变量,会在加载阶段被用 0 来初始化,这时候它和 .data 段一样可读可写。但在编译阶段,.data 段会被分配一部分空间已存放数据(这里从偏移 0x6c 开始),而 .bss 则没有,.bss 仅有的是 section headers 。 链接器从 .rel.text 就可以知道哪些地方需要进行重定位(relocate) 。 .symtab 是符号表。 Ndx 是符号表所在的 section 的 section header 编号。如 .data 段的 section header 编号是 3,而string1,string2,lenght 都是在 .data 段的。

文章TAG:怎么  连接  版本  版本号  readelf  
下一篇