我正在将Windows应用程序移植到Linux,该应用程序使用Windows APIs GetFileVersionInfoSize()
和GetFileVersionInfo()
从exe获取版本。但是我找不到类似于Linux的东西。
我知道我可以使用readelf
在Linux中读取应用程序或目标文件的内容,如下所示
[root@Panch-Linux]# readelf <xyz.so> -h
ELF Header:
Magic: 7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - Linux
ABI Version: 0
Type: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x4f7ec0
Start of program headers: 64 (bytes into file)
Start of section headers: 17823344 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 8
Size of section headers: 64 (bytes)
Number of section headers: 38
Section header string table index: 35
Shoud我使用readelf
来获取版本信息,如果是,那么字符串“Version”就是实际代表文件版本的字符串。另请告诉我如何在Linux环境中使用readelf
进行C ++编程。
如果这不是正确的方法,请建议我采取适当的方式。