Jak odnaleźć zależne biblioteki współdzielone.

Biblioteki współdzielone mogą być odnalezione poprzez wydanie polecenia:

 ldd nazwaAplikacji

Jednak gdy chcemy odnaleść wszystkie biblioteki zależne, które potrzebne są do odpalenia aplikacji skompilowanej dynamicznie możemy posłużyć się poniższym skryptem:

#!/bin/bash
# Author : Hemanth.HM
# Email : hemanth[dot]hm[at]gmail[dot]com
# License : GNU GPLv3
#

function useage()
{
    cat << EOU
Useage: bash $0 <path to the binary> <path to copy the dependencies>
EOU

exit 1
}

#Validate the inputs
[[ $# < 2 ]] && useage

#Check if the paths are vaild
[[ ! -e $1 ]] && echo "Not a vaild input $1" && exit 1
[[ -d $2 ]] || echo "No such directory $2 creating..."&& mkdir -p "$2"

#Get the library dependencies
echo "Collecting the shared library dependencies for $1..."
deps=$(ldd $1 | awk 'BEGIN{ORS=" "}$1\
~/^\//{print $1}$3~/^\//{print $3}'
\
 | sed 's/,$/\n/')
echo "Copying the dependencies to $2"

#Copy the deps
for dep in $deps
do
    echo "Copying $dep to $2"
    cp "$dep" "$2"
done

echo "Done!"

Wydajemy wówczas polecenie:

 bash ./ref.sh <path to the binary> <path to copy the dependencies>

czyli np w przypadku aplikacji o nazwie myApp:

 mkdir libs
 bash ./ref.sh myApp ./libs

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *