Κοινή χρήση τεχνολογίας

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

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Ο σύνδεσμος παίζει ζωτικό ρόλο στην ανάπτυξη προγραμμάτων Είναι υπεύθυνος για την ενσωμάτωση πολλών αρχείων αντικειμένων και αρχείων βιβλιοθήκης σε ένα εκτελέσιμο αρχείο. Πριν βουτήξουμε στο πώς λειτουργεί ο σύνδεσμος, τη διαφορά μεταξύ στατικής σύνδεσης και δυναμικής σύνδεσης και πώς να δημιουργήσετε και να χρησιμοποιήσετε βιβλιοθήκες δυναμικών συνδέσμων, ας περιγράψουμε πρώτα τις βασικές λειτουργίες του συνδέσμου.

Πώς λειτουργεί ο σύνδεσμος

Σύνδεσμος Είναι ένα εργαλείο υπεύθυνο για το συνδυασμό ενός ή περισσότερων αρχείων αντικειμένων και αρχείων βιβλιοθήκης σε ένα εκτελέσιμο αρχείο. Οι κύριες λειτουργίες του περιλαμβάνουν:

  1. Ανάλυση συμβόλων : Προσδιορίστε και επεξεργαστείτε όλα τα σύμβολα (ονόματα συναρτήσεων και μεταβλητών) στο πρόγραμμα, διασφαλίζοντας ότι κάθε σύμβολο έχει έναν μοναδικό ορισμό. Για σύμβολα που αναφέρονται αλλά δεν ορίζονται (εξωτερικά σύμβολα), ο σύνδεσμος αναζητά έναν ορισμό σε μια παρεχόμενη βιβλιοθήκη ή άλλο αρχείο αντικειμένων.

  2. επαναφορά : Προσαρμόστε τον κωδικό και τις διευθύνσεις δεδομένων σε κάθε μονάδα στην τελική διεύθυνση μνήμης. Η μετεγκατάσταση περιλαμβάνει διόρθωση διεύθυνσης στον κώδικα και προσαρμογή θέσης του τμήματος δεδομένων για να διασφαλιστεί ότι όλες οι αναφορές παραπέμπουν στη σωστή θέση μνήμης.

  3. συγχώνευση τμημάτων: Συγχώνευση τμημάτων του ίδιου τύπου (όπως τμήματα κώδικα, τμήματα δεδομένων κ.λπ.) από διαφορετικά αρχεία προορισμού σε ένα συνεχές τμήμα.

  4. βιβλιοθήκη επεξεργασίας : Συνδέστε τον κωδικό της βιβλιοθήκης που απαιτείται από το πρόγραμμα με το αρχείο αντικειμένου. Ο σύνδεσμος μπορεί να χειριστεί δύο τύπους βιβλιοθηκών: στατικές βιβλιοθήκες και δυναμικές βιβλιοθήκες.

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

Η διαφορά μεταξύ στατικής και δυναμικής σύνδεσης

Στατική Σύνδεση καιΔυναμική Σύνδεση Είναι δύο τρόποι λειτουργίας του συνδετήρα, ο καθένας με διαφορετικά χαρακτηριστικά και σενάρια χρήσης.

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

  • πλεονέκτημα

    • Ισχυρή ανεξαρτησία: Το εκτελέσιμο αρχείο που δημιουργείται περιέχει όλες τις εξαρτήσεις και δεν απαιτεί πρόσθετα αρχεία βιβλιοθήκης κατά το χρόνο εκτέλεσης.
    • Καλή συμβατότητα: ο χρόνος εκτέλεσης δεν εξαρτάται από την έκδοση της βιβλιοθήκης που είναι εγκατεστημένη στο σύστημα και δεν θα αντιμετωπίσει το πρόβλημα της "σύγκρουσης έκδοσης βιβλιοθήκης".
  • έλλειψη

    • Μεγάλο μέγεθος αρχείου: Κάθε εκτελέσιμο αρχείο περιέχει πλήρη κώδικα βιβλιοθήκης, με αποτέλεσμα να αυξάνεται το μέγεθος του αρχείου.
    • Πρόβλημα ενημέρωσης: Εάν η βιβλιοθήκη είναι ενημερωμένη, όλα τα προγράμματα που χρησιμοποιούν τη βιβλιοθήκη πρέπει να μεταγλωττιστούν εκ νέου.
  • Στατική επέκταση βιβλιοθήκης

    • Windows: .lib
    • Unix/Linux: .a
δυναμικός σύνδεσμος
  • έννοια : Στη δυναμική σύνδεση, ο κώδικας της βιβλιοθήκης φορτώνεται κατά το χρόνο εκτέλεσης και δεν είναι ενσωματωμένος στο εκτελέσιμο αρχείο. Το εκτελέσιμο περιέχει μόνο αναφορές σε βιβλιοθήκες και ο κώδικας της βιβλιοθήκης φορτώνεται από το λειτουργικό σύστημα κατά το χρόνο εκτέλεσης.

  • πλεονέκτημα

    • Μικρό μέγεθος αρχείου: το εκτελέσιμο αρχείο δεν περιέχει κώδικα βιβλιοθήκης, μόνο αναφορές στη βιβλιοθήκη.
    • Εύκολη ενημέρωση: Η ενημέρωση των βιβλιοθηκών δεν απαιτεί εκ νέου μεταγλώττιση του προγράμματος, απλώς αντικατάσταση των αρχείων της βιβλιοθήκης.
    • Υψηλή απόδοση μνήμης: Πολλά προγράμματα μπορούν να μοιράζονται παρουσίες μνήμης του ίδιου αρχείου βιβλιοθήκης, μειώνοντας τη χρήση της μνήμης.
  • έλλειψη

    • Ισχυρές εξαρτήσεις: Το εκτελέσιμο αρχείο πρέπει να μπορεί να βρει και να φορτώσει τη σωστή έκδοση του αρχείου βιβλιοθήκης όταν εκτελείται.
    • Ζητήματα συμβατότητας: Η αναντιστοιχία έκδοσης του αρχείου βιβλιοθήκης μπορεί να προκαλέσει την αποτυχία του προγράμματος.
  • Δυναμική επέκταση βιβλιοθήκης

    • Windows: .dll(Βιβλιοθήκη Dynamic-Link)
    • Unix/Linux: .so(κοινόχρηστο αντικείμενο)

Δημιουργήστε και χρησιμοποιήστε βιβλιοθήκες δυναμικών συνδέσμων

Δημιουργία βιβλιοθήκης δυναμικών συνδέσμων

Σε διαφορετικά λειτουργικά συστήματα, οι μέθοδοι δημιουργίας βιβλιοθηκών δυναμικών συνδέσμων είναι ελαφρώς διαφορετικές. Ακολουθούν μερικά κοινά βήματα και εντολές:

Δημιουργήστε μια βιβλιοθήκη δυναμικών συνδέσμων στο Linux
  1. Γράψτε τον κώδικα της βιβλιοθήκης

    Δημιουργήστε ένα αρχείο προέλευσης C που περιέχει τις συναρτήσεις που θέλουμε να τοποθετήσουμε στη δυναμική βιβλιοθήκη.

    // example.cpp
    #include