Τι είναι τα Linkers και πώς λειτουργούν;
Οι σύνδεσμοι είναι ένας τύπος λογισμικού που συνδέει αρχεία αντικειμένων και βιβλιοθήκες για να δημιουργήσει ένα εκτελέσιμο αρχείο. Χρησιμοποιούνται στην ανάπτυξη λειτουργικών συστημάτων, εφαρμογών και άλλου λογισμικού. Οι σύνδεσμοι λαμβάνουν ως είσοδο τα αρχεία αντικειμένων που δημιουργούνται από μεταγλωττιστές και βιβλιοθήκες και δημιουργούν ένα εκτελέσιμο αρχείο ως έξοδο. Οι σύνδεσμοι εκτελούν διάφορες λειτουργίες, όπως:
1. Επίλυση συμβολικών αναφορών: Όταν ένα πρόγραμμα είναι γραμμένο σε γλώσσα υψηλού επιπέδου, μπορεί να περιέχει συμβολικές αναφορές σε συναρτήσεις ή μεταβλητές που δεν ορίζονται στον τρέχοντα πηγαίο κώδικα. Ο σύνδεσμος επιλύει αυτές τις αναφορές βρίσκοντας τους ορισμούς των συναρτήσεων ή των μεταβλητών σε άλλα αρχεία αντικειμένων ή βιβλιοθήκες.
2. Μετατόπιση κώδικα και δεδομένων: Όταν δημιουργούνται αρχεία αντικειμένων από τον μεταγλωττιστή, ενδέχεται να περιέχουν κώδικα και δεδομένα που σχετίζονται με τη θέση του αρχείου αντικειμένου. Ο σύνδεσμος μετακινεί αυτόν τον κώδικα και τα δεδομένα στη σωστή θέση στο εκτελέσιμο αρχείο.
3. Αφαίρεση περιττού κώδικα και δεδομένων: Ο σύνδεσμος μπορεί να αφαιρέσει κώδικα και δεδομένα που δεν χρειάζονται στο τελικό εκτελέσιμο αρχείο, μειώνοντας το μέγεθός του και βελτιώνοντας την απόδοσή του.
4. Δημιουργία εκτελέσιμου αρχείου: Ο σύνδεσμος λαμβάνει τα αρχεία αντικειμένων και τις βιβλιοθήκες ως είσοδο και δημιουργεί ένα εκτελέσιμο αρχείο που μπορεί να εκτελεστεί στον υπολογιστή προορισμού.
Υπάρχουν διάφοροι τύποι διαθέσιμων συνδέσμων, όπως:
1. Δυναμικοί σύνδεσμοι: Αυτοί οι σύνδεσμοι δημιουργούν ένα εκτελέσιμο αρχείο που περιέχει μια αναφορά στις βιβλιοθήκες και άλλα αρχεία αντικειμένων από τα οποία εξαρτάται. Όταν εκτελείται το πρόγραμμα, ο δυναμικός σύνδεσμος φορτώνει αυτές τις εξαρτήσεις και επιλύει τυχόν συμβολικές αναφορές στο χρόνο εκτέλεσης.
2. Στατικοί σύνδεσμοι: Αυτοί οι σύνδεσμοι δημιουργούν ένα εκτελέσιμο αρχείο που περιέχει όλες τις εξαρτήσεις που είναι ενσωματωμένες σε αυτό. Αυτό σημαίνει ότι το πρόγραμμα μπορεί να εκτελεστεί χωρίς πρόσθετες εξαρτήσεις, αλλά σημαίνει επίσης ότι το μέγεθος του εκτελέσιμου αρχείου θα είναι μεγαλύτερο.
3. Κοινόχρηστοι σύνδεσμοι: Αυτοί οι σύνδεσμοι δημιουργούν ένα εκτελέσιμο αρχείο που περιέχει κοινόχρηστες βιβλιοθήκες, οι οποίες είναι συλλογές κώδικα και δεδομένων που μπορούν να χρησιμοποιηθούν από πολλά προγράμματα. Όταν ένα πρόγραμμα συνδέεται με μια κοινόχρηστη βιβλιοθήκη, στο τελικό εκτελέσιμο αρχείο περιλαμβάνονται μόνο οι συγκεκριμένες λειτουργίες και μεταβλητές που χρειάζονται. και βιβλιοθήκες και δημιουργήστε ένα εκτελέσιμο αρχείο που μπορεί να εκτελεστεί στο μηχάνημα προορισμού. Εκτελούν πολλές λειτουργίες, συμπεριλαμβανομένης της επίλυσης συμβολικών αναφορών, της μετεγκατάστασης κώδικα και δεδομένων, της αφαίρεσης περιττών κωδικών και δεδομένων και της δημιουργίας ενός εκτελέσιμου αρχείου. Υπάρχουν διάφοροι τύποι διαθέσιμων συνδέσμων, συμπεριλαμβανομένων των δυναμικών, στατικών και κοινόχρηστων συνδέσμων.