gcc编译出来的,应该怎么做呢?
5 个解决方案
#1
gcc -v
#2
那是不可能的,除非你加入了调试信息,也就是编译的时候加入了-g参数,然后用gdb调试就可以显示。最大程度上查看一个elf文件信息。
如下,省略了很多内容。
如下,省略了很多内容。
$ readelf -Wa /bin/cp
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x8049fc0
Start of program headers: 52 (bytes into file)
Start of section headers: 117712 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 8
Size of section headers: 40 (bytes)
Number of section headers: 32
Section header string table index: 31
#3
#4
除了readelf
可以部分使用ldd查看依赖的gcc/g++库来判定大数字版本(libgcc改动较少,libstdc++改动较多)
3和4不一样
4.3之前和之后不一样
4.6又改了一次
如果是静态编译的,那没办法了,至少我不知道了
只能从反汇编来推测他的优化情形及采用的异常(对gcc的优化变更要求相当了解)
可以部分使用ldd查看依赖的gcc/g++库来判定大数字版本(libgcc改动较少,libstdc++改动较多)
3和4不一样
4.3之前和之后不一样
4.6又改了一次
如果是静态编译的,那没办法了,至少我不知道了
只能从反汇编来推测他的优化情形及采用的异常(对gcc的优化变更要求相当了解)
#5
学习了。。。
#1
gcc -v
#2
那是不可能的,除非你加入了调试信息,也就是编译的时候加入了-g参数,然后用gdb调试就可以显示。最大程度上查看一个elf文件信息。
如下,省略了很多内容。
如下,省略了很多内容。
$ readelf -Wa /bin/cp
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x8049fc0
Start of program headers: 52 (bytes into file)
Start of section headers: 117712 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 8
Size of section headers: 40 (bytes)
Number of section headers: 32
Section header string table index: 31
#3
这里也有相关的讨论,可以看看。
http://*.com/questions/2387040/how-to-retrieve-the-gcc-version-used-to-compile-a-given-elf-executable
http://*.com/questions/2387040/how-to-retrieve-the-gcc-version-used-to-compile-a-given-elf-executable
#4
除了readelf
可以部分使用ldd查看依赖的gcc/g++库来判定大数字版本(libgcc改动较少,libstdc++改动较多)
3和4不一样
4.3之前和之后不一样
4.6又改了一次
如果是静态编译的,那没办法了,至少我不知道了
只能从反汇编来推测他的优化情形及采用的异常(对gcc的优化变更要求相当了解)
可以部分使用ldd查看依赖的gcc/g++库来判定大数字版本(libgcc改动较少,libstdc++改动较多)
3和4不一样
4.3之前和之后不一样
4.6又改了一次
如果是静态编译的,那没办法了,至少我不知道了
只能从反汇编来推测他的优化情形及采用的异常(对gcc的优化变更要求相当了解)
#5
学习了。。。