получение зависимых модулей (общих объектов) для двоичного файла - PullRequest
1 голос
/ 27 января 2010

У меня есть бинарный файл на linux .. tclsh8.4. Это зависит от определенных файлов tcl * .so.

  1. Есть ли способ получить эту информацию из самого двоичного файла?

  2. Файлы tcl * .so, от которых зависит двоичный файл tclsh8.4, находятся в каком-либо другом каталоге с ограниченными правами. Что я должен сделать с двоичным файлом, чтобы использовать те же файлы .so из другого места?

Будет ли работать только копирование oved файлов .so в том же месте?

Ответы [ 2 ]

4 голосов
/ 27 января 2010

Используйте ldd для этого.

Копирование общих объектов не будет работать, поскольку загрузчик Linux ищет общие объекты только в каталогах, указанных в /etc/ld.so.conf. Вам нужно будет использовать $LD_LIBRARY_PATH, чтобы сообщить загрузчику, где искать дополнительные общие объекты.

2 голосов
/ 27 января 2010

Чтобы увидеть зависимости динамического файла .so, вы можете использовать команду ldd. Чтобы получить информацию об исполняемом файле, проверьте команду readelf.

Если вам нужно проверить зависимости нескольких файлов .so, вы можете использовать следующий скрипт:

#!/bin/bash
# dependencies.sh

# Needs to specify the path to check for .so dependencies
if [ $# -ne 1 ] 
then
   echo 'You need to specify the path'
   exit 0
fi

path=$1

for file in "$(find $path -name '*.so')"
do
   ldd $file
done

exit 0

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...