2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Ο σύνδεσμος παίζει ζωτικό ρόλο στην ανάπτυξη προγραμμάτων Είναι υπεύθυνος για την ενσωμάτωση πολλών αρχείων αντικειμένων και αρχείων βιβλιοθήκης σε ένα εκτελέσιμο αρχείο. Πριν βουτήξουμε στο πώς λειτουργεί ο σύνδεσμος, τη διαφορά μεταξύ στατικής σύνδεσης και δυναμικής σύνδεσης και πώς να δημιουργήσετε και να χρησιμοποιήσετε βιβλιοθήκες δυναμικών συνδέσμων, ας περιγράψουμε πρώτα τις βασικές λειτουργίες του συνδέσμου.
Σύνδεσμος Είναι ένα εργαλείο υπεύθυνο για το συνδυασμό ενός ή περισσότερων αρχείων αντικειμένων και αρχείων βιβλιοθήκης σε ένα εκτελέσιμο αρχείο. Οι κύριες λειτουργίες του περιλαμβάνουν:
Ανάλυση συμβόλων : Προσδιορίστε και επεξεργαστείτε όλα τα σύμβολα (ονόματα συναρτήσεων και μεταβλητών) στο πρόγραμμα, διασφαλίζοντας ότι κάθε σύμβολο έχει έναν μοναδικό ορισμό. Για σύμβολα που αναφέρονται αλλά δεν ορίζονται (εξωτερικά σύμβολα), ο σύνδεσμος αναζητά έναν ορισμό σε μια παρεχόμενη βιβλιοθήκη ή άλλο αρχείο αντικειμένων.
επαναφορά : Προσαρμόστε τον κωδικό και τις διευθύνσεις δεδομένων σε κάθε μονάδα στην τελική διεύθυνση μνήμης. Η μετεγκατάσταση περιλαμβάνει διόρθωση διεύθυνσης στον κώδικα και προσαρμογή θέσης του τμήματος δεδομένων για να διασφαλιστεί ότι όλες οι αναφορές παραπέμπουν στη σωστή θέση μνήμης.
συγχώνευση τμημάτων: Συγχώνευση τμημάτων του ίδιου τύπου (όπως τμήματα κώδικα, τμήματα δεδομένων κ.λπ.) από διαφορετικά αρχεία προορισμού σε ένα συνεχές τμήμα.
βιβλιοθήκη επεξεργασίας : Συνδέστε τον κωδικό της βιβλιοθήκης που απαιτείται από το πρόγραμμα με το αρχείο αντικειμένου. Ο σύνδεσμος μπορεί να χειριστεί δύο τύπους βιβλιοθηκών: στατικές βιβλιοθήκες και δυναμικές βιβλιοθήκες.
Δημιουργία εκτελέσιμου αρχείου: Η τελική έξοδος είναι ένα εκτελέσιμο αρχείο που μπορεί να εκτελεστεί στο λειτουργικό σύστημα.
Στατική Σύνδεση καιΔυναμική Σύνδεση Είναι δύο τρόποι λειτουργίας του συνδετήρα, ο καθένας με διαφορετικά χαρακτηριστικά και σενάρια χρήσης.
έννοια : Στη στατική σύνδεση, ο κώδικας της βιβλιοθήκης αντιγράφεται κατά το χρόνο μεταγλώττισης και ενσωματώνεται σε κάθε εκτελέσιμο που τον χρησιμοποιεί. Με αυτόν τον τρόπο, το εκτελέσιμο αρχείο που δημιουργείται περιέχει όλο τον απαιτούμενο κώδικα και δεν βασίζεται σε αρχεία εξωτερικής βιβλιοθήκης.
πλεονέκτημα:
έλλειψη:
Στατική επέκταση βιβλιοθήκης:
.lib
.a
έννοια : Στη δυναμική σύνδεση, ο κώδικας της βιβλιοθήκης φορτώνεται κατά το χρόνο εκτέλεσης και δεν είναι ενσωματωμένος στο εκτελέσιμο αρχείο. Το εκτελέσιμο περιέχει μόνο αναφορές σε βιβλιοθήκες και ο κώδικας της βιβλιοθήκης φορτώνεται από το λειτουργικό σύστημα κατά το χρόνο εκτέλεσης.
πλεονέκτημα:
έλλειψη:
Δυναμική επέκταση βιβλιοθήκης:
.dll
(Βιβλιοθήκη Dynamic-Link).so
(κοινόχρηστο αντικείμενο)Σε διαφορετικά λειτουργικά συστήματα, οι μέθοδοι δημιουργίας βιβλιοθηκών δυναμικών συνδέσμων είναι ελαφρώς διαφορετικές. Ακολουθούν μερικά κοινά βήματα και εντολές:
Γράψτε τον κώδικα της βιβλιοθήκης:
Δημιουργήστε ένα αρχείο προέλευσης C που περιέχει τις συναρτήσεις που θέλουμε να τοποθετήσουμε στη δυναμική βιβλιοθήκη.
// example.cpp
#include