Δημοσιεύτηκε: 13 Ιαν 2013, 19:14
από simosx
alkismavridis έγραψε:Ας το κάνω πιο συγκεκριμένο:
έχω 5 αρχεία:
τα lib1.o, lib2.o lib3.o, lib4.o και main.o

Όλα compiled από το NASM (καθαρό assembly) σε μορφή elf64. Το main.o πρέπει να συνδεθεί με τα άλλα 4 για να δουλέψει.
Και θέλω: Η σύνδεση με τα δύο πρώτα να είναι static, δηλαδή ακόμα και αν τα σβήσω, το πρόγραμμα να δουλεύει κανονικά,
και η σύνδηση με τα δύο τελευταία να είναι dynamic, δηλαδή το πρόγραμμα να μην τα "εσωκλείει", αλλά να τα ψάχνει κατά την εκτέλεση.
Τι πρέπει να πατήσω στο ld??


Τα δύο πρώτα ούτως ή άλλως θα συμπεριληφθούν στο τελικό εκτελέσιμο. Για τα δύο άλλα, πρέπει να τα φτιάξεις σε δυναμικές βιβλιοθήκες, π.χ. lib3.so, lib4.so, και κατά τη μεταγλώττιση να γράψεις κάτι σαν
Κώδικας: Επιλογή όλων
gcc lib1.o lib2.o -L. -l3 -l4 main.o -o main