How to find the program interpreter that a Linux application requests 1
Recently we tried to execute an application and we got the following error:
-bash: ./main: No such file or directory
This error occurred because our application was trying to use an interpreter that was not available on that machine.
We used the
readelf
utility that displays information about ELF files (including the interpreter information) to resolve our issue.Specifically we used
readelf -l ./main
which displays the information contained in the file’s segment headers, if it has any.(You can replace the parameter
-l
with --program-headers
or --segments
, they are the same).
From the data that was produced we only needed the following line:
[Requesting program interpreter: /lib/ld-linux-armhf.so.3]
so we used
The full and final command we used was:
grep
to filter out all other lines and then cut
and tr
to get the data after the :
character (second column) and then remove all spaces and the ]
character from the result.The full and final command we used was:
readelf -l ./main | grep 'Requesting' | cut -d':' -f2 | tr -d ' ]';