Estoy construyendo una aplicación C++ que usa la biblioteca IPP de Intel. Esta biblioteca está instalada de manera predeterminada en/opt y requiere que establezca LD_LIBRARY_PATH
tanto para compilar como para ejecutar su software (si elige la biblioteca compartida, lo cual hice). Ya modifiqué mi configure.ac
/Makefile.am
para no tener que establecer esa variable al compilar, pero aún no puedo encontrar la biblioteca compartida en tiempo de ejecución; ¿Cómo puedo hacer eso?¿Cómo me deshago de LD_LIBRARY_PATH en tiempo de ejecución?
Estoy compilando con la bandera -Wl, -R/path/to/libdir
usando g++
Actualización 1: En realidad mi programa binario tiene algunas bibliotecas IPP vinculados correctamente, pero sólo uno no es:
$ ldd myprogram
linux-vdso.so.1 => (0x00007fffa93ff000)
libippacem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippacem64t.so.6.0 (0x00007f22c2fa3000)
libippsem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippsem64t.so.6.0 (0x00007f22c2d20000)
libippcoreem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippcoreem64t.so.6.0 (0x00007f22c2c14000)
[...]
libiomp5.so => not found
libiomp5.so => not found
libiomp5.so => not found
Por supuesto la biblioteca está allí:
$ locate libiomp5.so
/opt/intel/ipp/6.0.2.076/em64t/sharedlib/libiomp5.so
Podría necesitar cambiar la pregunta a otra cosa, pero necesito sugerencias, estoy corto de ideas – Kjir
Hm, me pregunto si es una coincidencia que a esa también le falta la extensión del número de versión - tal vez IPP simplemente no es instalarse ¿verdad? – Cascabel
Me pregunto si la biblioteca omitida no está referenciada en su programa, sino en las bibliotecas de sus referencias. –