sintaxis ejemplos crear comandos comando carpeta basicos archivo linux rpath

ejemplos - crear archivo en linux



¿Hay alguna manera de inspeccionar la ruta actual en Linux? (4)

Para el registro, aquí hay un par de comandos que mostrarán el encabezado rpath .

objdump -x binary-or-library |grep RPATH

Quizás una mejor manera de hacerlo es la siguiente:

readelf -d binary-or-library |head -20

El segundo comando también enumera las dependencias directas de otras bibliotecas seguidas de rpath .

Soy consciente de que es posible usar readelf -d <elf> | grep RPATH readelf -d <elf> | grep RPATH para inspeccionar un binario dado desde el shell, pero ¿es posible hacerlo dentro de un proceso?

Algo así como (mi llamada al sistema completamente hecha):

/* get a copy of current rpath into buffer */ sys_get_current_rpath(&buffer);

Estoy tratando de diagnosticar algunos problemas sospechosos de vinculación de SO en nuestro código base, y me gustaría inspeccionar el RPATH de esta manera si es posible (preferiría no tener que generar un script externo).


También puedes usar:

chrpath -l binary-or-library


quizás pueda usar el código de github.com/NixOS/patchelf pero AFAIK no es un cajero automático de la biblioteca.


#include <stdio.h> #include <elf.h> #include <link.h> int main() { const ElfW(Dyn) *dyn = _DYNAMIC; const ElfW(Dyn) *rpath = NULL; const char *strtab = NULL; for (; dyn->d_tag != DT_NULL; ++dyn) { if (dyn->d_tag == DT_RPATH) { rpath = dyn; } else if (dyn->d_tag == DT_STRTAB) { strtab = (const char *)dyn->d_un.d_val; } } if (strtab != NULL && rpath != NULL) { printf("RPATH: %s/n", strtab + rpath->d_un.d_val); } return 0; }