你找不到它.该ELF格式具有非常有限的类型信息(并且不知道是否有些全局变量是一个struct或一个int;它知道大部分的sizeof变量).见elf(5).
但是,如果您编译程序(以及它正在使用的库)以获得调试支持(例如g++ -Wall -g).然后ELF文件包含其他调试部分,通常使用DWARF格式.可以使用该strip命令从ELF文件中删除这些信息.所以请参阅strip(1)&readelf(1)&objdump(1).
但是你真的想要使用源代码.因此获取程序的源代码(因为Linux主要由自由软件构成,这通常是可能的)并重新编译它(当然还要研究程序的源代码).也许你想要(但这需要数周的工作)来定制你的编译器(例如通过编写你自己的GCC插件,或使用GCC MELT,或自定义你的Clang编译器)并使用它来重新编译代码(并特别处理所有全局变量)声明).