[CentOS-de] Probleme mit QT-Bibliotheken

Andreas Mock andreas.mock at drumedar.de
Mi Apr 17 10:54:13 UTC 2019


Hallo Jan,

ich konnte das besagte Script nicht mehr finden. Aus diesem
Grund habe ich ein perl-Script zusammengenagelt, das Dir
eventuell weiterhilft. Bei Fragen hierzu bitte fragen:

-----------------8<--------------------
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;
###############################################################
#
# WARNING: This script calls 'ldd' on the given file.
# This MAY be a security risk. Look at manual pages of 'ldd'.
#
# Use this script on our own risk. Keine Gewähr. NO WARRANTY.
#
###############################################################

die "ERROR: You have to supply path to executable." unless(@ARGV);

my %found;
getlibs($ARGV[0], \%found, 0);

foreach my $file (values %found) {
    next unless $file;
    say $file;
}

sub getlibs {
    my ($binary, $foundref, $level) = @_;

    $level++;
    die "ERROR: Too deep recursion." if($level > 10);

    my $ausgabe = `ldd "$binary"`;
    die "ERROR: Can't get ldd information from '$binary'."
        if $?;

    my @new;
    my @lines = split "\n", $ausgabe;

    for my $line (@lines) {
        next if $line =~ /statically/;
        $line =~ s/^\t*//;
        $line =~ s/\s*\(0x.*$//;
        my ($library, $path) = split /\s*=>\s*/, $line, 2;
        next unless defined $library;
        next if exists $foundref->{$library};
        $foundref->{$library} = $path;
        push @new, $path if $path;
    }

    foreach my $path (@new) {
        getlibs($path, $foundref, $level);
    }

}
-----------------8<--------------------

Das Script analysiert die Ausgabe von ldd und steigt
dann für jede weitere Library weiter ab. Am Ende
werden die Pfade zu den Libraries ausgegeben. 
Beachte: Das sind meistens symbolische Links, so
dass die Zieldateien selbst auch noch kopiert
werden müssen. Zusammen mit LD_LIBRARY_PATH solltest
Du damit eine passende Laufzeitumgebung zusammenstellen
können.

Einen interessanten Link zur Thematik noch:

https://amir.rachum.com/blog/2016/09/17/shared-libraries/#runtime-search-path

Viel Spaß! ;-)

Gruß
Andreas



> -----Ursprüngliche Nachricht-----
> Von: CentOS-de <centos-de-bounces at centos.org> Im Auftrag von Handwerker,
> Jan (IMK)
> Gesendet: Mittwoch, 17. April 2019 11:14
> An: centos-de at centos.org
> Betreff: Re: [CentOS-de] Probleme mit QT-Bibliotheken
> 
> Hallo Andreas,
> 
> zunächst bitte ich um Entschuldigung für die PM zwischendurch.
> Anfängerfehler. (Obwohl ich eigentlich nicht Anfänger beim Mailen bin.)
> 
> Am 16.04.19 um 15:40 schrieb Andreas Mock:
> > ich kenne Deinen Kenntnisstand nicht, daher kann man
> > als Ratgebender nur ins Fettnäpfchen tappen, wenn man
> > Sachen vorschlägt, bei denen das Gegenüber nur die Augen
> > rollt und sich denkt: Ja, ja, da bin ich schon durch.
> 
> Also ich bin erst einmal froh, dass Du/dass jemand überhaupt
> reagiert hat. Natürlich kennst Du meine Erfahrungen nicht. Dem wäre
> auch so, wenn ich hier nicht neu wäre. Meiner Meinung nach steht da
> kein Fettnapf für Dich bereit. Das sehe ich wie in der ersten Hilfe:
> Wer hilft kann nichts falsch machen. Nur nicht helfen ist (dort) falsch.
> 
> > a) Ich habe zu der besagtem dynamischen Library unter RHEL/Centos
> > nichts gefunden.
> 
> Ich auch nicht. Es ist schon strange... Wo hat der
> Softwarehersteller nur die libQtSolutions.so her?
> 
> > b) Ich habe für die Erzeugung eines Jails mal ein Skript
> > geschrieben, dass sich via ldd die dynamischen Abhängigkeiten
> > rausfischt und diese rekursiv auflöst.
> 
> Das klingt schon mal spannend. Eine Rekursionsstufe habe ich schnell
> selbst gebastelt, aber wenn Dein Skript das systematisch kann, wäre
> ich erfreut, Du überliesest es mir :-).
> 
> Und wenn Du mir dann noch genauer erklärst (oder einen Pointer
> gibst), wie ich ein Jail konstruiere, würde ich das auch versuchen.
> 
> > Damit bekommst Du den gesamten Abhängigkeitsbaum heraus.
> > Das nur noch als Tipp am Rande.
> >
> > Bin gespannt, ob Du es noch zum Fliegen bringst.
> 
> Wenn alle Stricke reißen, wird ein Notebook mit altem CentOS
> hingestellt. Aber genau das wollte ich eigentlich vermeiden.
> 
> Herzlichen Dank für die Unterstützung.
> 
> Liebe Grüße
> Jan
> --
> _________________________________________________________________
>   Jan Handwerker http://www.imk-tro.kit.edu/jan.handwerker.php



Mehr Informationen über die Mailingliste CentOS-de