Χρησιμοποιώντας την εντολή "ldd" στο Linux

Η εντολή ldd μπορεί να χρησιμοποιηθεί για να σας δείξει τις κοινές βιβλιοθήκες που απαιτούνται από οποιοδήποτε πρόγραμμα.

Αυτό είναι χρήσιμο για την επεξεργασία όταν υπάρχει έλλειψη εξάρτησης και μπορεί να χρησιμοποιηθεί για να παραθέσει λείπουν λειτουργίες και αντικείμενα.

ldd Command Syntax

Αυτή είναι η σωστή σύνταξη όταν χρησιμοποιείτε την εντολή ldd:

ldd [ΕΠΙΛΟΓΗ] ... ΑΡΧΕΙΟ ...

Ακολουθούν οι διαθέσιμοι διακόπτες εντολών ldd που μπορούν να εισαχθούν στο σημείο [OPTION] στην παραπάνω εντολή:

--help εκτύπωση αυτής της βοήθειας και εξόδου -version εκτύπωση πληροφοριών έκδοσης και εξόδου -d, --data-relocs επεξεργασίας μετακινήσεων δεδομένων -r, --function-relocs επεξεργασίας δεδομένων και μετακινήσεων λειτουργιών -u, --ηλειτουργική εκτύπωση αχρησιμοποίητων άμεσων εξαρτήσεων -v, --verbose εκτυπώστε όλες τις πληροφορίες

Πώς να χρησιμοποιήσετε την εντολή ldd

Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να λάβετε περισσότερες πληροφορίες από οποιαδήποτε εντολή ldd:

ldd -v / path / to / πρόγραμμα / εκτελέσιμο

Η έξοδος εμφανίζει πληροφορίες έκδοσης καθώς και τις διαδρομές και διευθύνσεις στις κοινόχρηστες βιβλιοθήκες, όπως αυτή:

ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)

Εάν το αρχείο SO δεν υπάρχει καθόλου, μπορείτε να βρείτε τις ελλείπουσες βιβλιοθήκες χρησιμοποιώντας την ακόλουθη εντολή:

ldd -d διαδρομή / προς / πρόγραμμα

Η έξοδος είναι παρόμοια με τα ακόλουθα:

linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => ​​not foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)

Σημαντικό: Ποτέ μην εκτελείτε την εντολή ldd σε ένα μη αξιόπιστο πρόγραμμα, αφού η εντολή μπορεί να την εκτελέσει. Αυτή είναι μια ασφαλέστερη εναλλακτική λύση που δείχνει μόνο τις άμεσες εξαρτήσεις και όχι ολόκληρη τη δέντρο εξάρτησης: objdump -p / path / to / program | grep NEEDED .

Πώς να βρείτε τη διαδρομή σε μια εφαρμογή

Πρέπει να δώσετε την πλήρη διαδρομή σε μια εφαρμογή, αν θέλετε να βρείτε τις εξαρτήσεις της με το ldd, το οποίο μπορείτε να κάνετε με διάφορους τρόπους.

Για παράδειγμα, με αυτόν τον τρόπο θα βρείτε τη διαδρομή προς τον Firefox :

βρείτε / firefox όνομα

Το πρόβλημα με την εντολή εντοπισμού , ωστόσο, είναι ότι δεν θα εμφανίζεται μόνο το εκτελέσιμο αλλά παντού που βρίσκεται ο Firefox, όπως παρακάτω:

Αυτή η προσέγγιση είναι λίγο υπερβολική και μπορεί να χρειαστεί να χρησιμοποιήσετε την εντολή sudo για να ανυψώσετε τα προνόμιά σας, αλλιώς είναι πιθανό να λάβετε πολλά λάθη.

Είναι αντίθετα πολύ πιο εύκολο να χρησιμοποιήσετε την εντολή whereis για να βρείτε τη διαδρομή μιας εφαρμογής:

όπου είναι το firefox

Αυτή τη φορά η έξοδος μπορεί να φαίνεται ως εξής:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / firefox

Το μόνο που έχετε να κάνετε τώρα για να βρείτε τις κοινές βιβλιοθήκες για τον Firefox είναι να πληκτρολογήσετε την ακόλουθη εντολή:

ldd / usr / bin / firefox

Η έξοδος από την εντολή θα είναι κάτι σαν αυτό:

linux-vdso.so.1 (0x00007ffff8364000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)
libstdc ++. so.6 => /usr/lib/libstdc++.so.6 (0x00007feb98bf4000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007feb986e0000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007feb9833c000)
/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000)

Το linux-vdso.so.1 είναι το όνομα της βιβλιοθήκης και ο δεκαεξαδικός αριθμός είναι η διεύθυνση στην οποία θα φορτωθεί η βιβλιοθήκη στη μνήμη.

Θα παρατηρήσετε σε πολλές από τις άλλες γραμμές ότι το σύμβολο => ακολουθείται από μια διαδρομή. Αυτή είναι η πορεία προς το φυσικό δυαδικό. ο δεκαεξαδικός αριθμός είναι η διεύθυνση όπου θα φορτωθεί η βιβλιοθήκη.