cc [flag . . . ] file . . . -lelf [library] . . .#include <libelf.h>
size_t elf_rand(Elf elf, size_t offset);
elf_rand provides random archive processing, preparing elf to access an arbitrary archive member. elf must be a descriptor for the archive itself, not a member within the archive. offset gives the byte offset from the beginning of the archive to the archive header of the desired member. See elf_getarsym(3elf) for more information about archive member offsets. When elf_rand works, it returns offset. Otherwise it returns 0, because an error occurred, elf was null, or the file was not an archive (no archive member can have a zero offset). A program may mix random and sequential archive processing.
#include <ar.h> #include <libelf.h>int rewindelf(Elf elf) { if (elf_rand(elf, (size_t)SARMAG) == SARMAG) return 0; return -1; }