четверг, 18 августа 2016 г.

Linux & Qt & ldd Копирование библиотек.

 Linux & Qt & ldd Копирование библиотек.

         Чтобы перенести приложение в Linux особенно если это Qt нужно скопировать все библиотеки которые требует приложение. О том какие именно библиотеки требует ваше приложение(какие использует) в Linux можно узнать выполнив в терминале:
ldd <you_programm>

Если библиотек не так много, то можно скопировать их в папку с приложением. Но что делать если библиотек очень много? Я для этих целей написал скрипт на perl.

Для того чтобы автоматизировать процесс, нужно загрузить perl; По умолчанию в debian > 6.0 идет perl в комплекте. Если этого нет то его следует поставить.

apt-get install perl

Уже поставлен?...

Далее для скрипта требуется библиотека, в терминале набираем:

cpan File::Copy

Создаем файл называем его script.pl. Открываем. 

use strict;
use warnings;
use File::Copy;

#Тут путь до вашего бинарника
my $filename = "/home/<user>/myapp";

#Тут путь до папки куда копировать библиотеки.
my $outdir   = "/home/<user>/Out/";

chomp(my @libraries = `/usr/bin/ldd -r -v $filename`);
       
foreach my $key (@libraries)
{
    next if not $key;
    my $first = index $key, "/";
    my $second = index $key, "(";
    my $newkey = substr $key, $first, ($second - $first - 1);
    copy($newkey, $outdir);  
    print $newkey, "\n";
    
    print $key, "\n";
}

copy($filename, $outdir);

Замените переменные $filename и $outdir на ваши.

Далее в терминале необходимо запустить скрипт, выполняем.
perl script.pl

p.s # - означает комментарий.