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

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

[cclN_bash width=”100%” lines=”1″]
ldd nazwaAplikacji
[/cclN_bash]

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:

[cclN_bash width=”100%” lines=”38″]
#!/bin/bash
# Author : Hemanth.HM
# Email : hemanth[dot]hm[at]gmail[dot]com
# License : GNU GPLv3
#

function useage()
{
cat << EOU Useage: bash $0 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!" [/cclN_bash] Wydajemy wówczas polecenie: [cclN_bash width="100%" lines="1"] bash ./ref.sh [/cclN_bash]

czyli np w przypadku aplikacji o nazwie myApp:

[cclN_bash width=”100%” lines=”2″]
mkdir libs
bash ./ref.sh myApp ./libs
[/cclN_bash]

About the author

Szymon Wójtowicz

Programista C++/Qt. Tworzący aplikacje mobilne i desktopowe.

View all posts

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *