Εργαλεία μεταγλώττισης |
Περιεχόμενα Contents |
Η εντολή: ld
Το πρόγραμμα ld συνδέει (link) διάφορα αντικείμενα, στη δοσμένη σειρά, σε ένα εκτελέσιμο αντικείμενο (προεπιλογή a.out). Συνήθως εκτελείται αυτόματα από τις εντολές μεταγλώττισης όπως η gcc. Η βασική σύνταξη της εντολής είναι:
ld [options] objfiles
Επιλογές
- -Ldir
- Ψάχνει στο dir εκτός από προ επιλεγμένους φακέλους για βιβλιοθήκες.
- -o file
- Ορίζει το αρχείο εξόδου ως file. Προεπιλεγμένο είναι το a.out.
Για παράδειγμα:
ld -o myexe file1.o file2.o file3.o
δημιουργεί το εκτελέσιμο myexe από τα αντικείμενα file1.o file2.o file3.o.
H εντολή: ar
Χρησιμοποιείται συνήθως για τη δημιουργία βιβλιοθηκών. Η βασική σύνταξη της εντολής είναι:
ar key [args] [posname] [count] archive [files]
Key
- d
- Διαγραφή των files από το archive.
- m
- Μετακίνηση των files στο τέλος του archive.
- p
- Τυπώνει τα files του archive.
- q
- Προσθέτει τα files στο τέλος του archive.
- r
- Αντικαθιστά τα files στο archive.
- t
- Δείχνει τα περιεχόμενα του archive ή τα αναφερθέντα files.
- x
- Εξάγει τα περιεχόμενα από το archive ή μόνο τα αναφερθέντα files.
Συνήθη ορίσματα
- a
- Χρηση με r ή m για τοποθέτηση των files στο archive μετά το posname.
- b
- Όπως το a αλλά πρίν το posname.
- c
- Δημιουργία archive "σιωπηλά"
- i
- Όπως το b.
- u
- Χρήση με το r για την αντικατάσταση μόνο των files που άλλαξαν από την τελευταία φορά που προστέθηκαν στο archive.
Για παράδειγμα η εντολή
ar cr libast.a *.o
θα δημιουργήσει μια βιβλιοθήκη με το όνομα libast από όλα τα αρχεία .ο που βρίσκονται στο φάκελο. Αν κάποιο όνομα αρχείο υπάρχει ήδη στη βιβλιοθήκη τοτε θα αντικατασταθεί.
H εντολή: nm
Με αυτή την εντολή μπορούν να τυπωθούν τα ονόματα των συναρτήσεων που χρησιμοποιούνται στο αντικείμενο. Τα ονόματα τυπώνονται όχι όπως φαίνονται στον πηγαίο κώδικα αλλά με underscores και άλλες λεπτομέρειες που εξαρτώνται από το μεταγλωττιστή. Η εντολή nm είναι πολύ χρήσιμη κατά την αποσφαλμάτωση προγραμμάτων που είναι γραμμένα σε ανάμικτες γλώσσες προγραμματισμού. Η βασική σύνταξη της εντολής είναι:
nm [options] objfiles
Για παράδειγμα το αρχειό hallo.o του πρώτου παραδειγματος στο λειτουργικό mac os x (powerpc) θα δώσει:
00000000 T _main U _printf U dyld_stub_binding_helper
