Στις 3 Οκτωβρίου 2011 10:03 μ.μ., ο χρήστης Pantelis Koukousoulas <pktoss [ at ] gmail [ dot ] com> έγραψε: > 2011/10/3 Nick Kossifidis <mickflemm [ at ] gmail [ dot ] com>: >> Και ξαναρωτάω γιατί πραγματικά δε πιστεύω ότι γράφω Κινέζικα, πού >> ακριβώς λέω ότι φταίει κάτι/κάποιος ? Απλά ρωτάω αν έχετε δει κάτι >> αντίστοιχο ! Έστω ότι έχω memory corrupting bug, γιατί στον 4.4.6 και >> στον 4.5.2 δε φαίνεται και όλα δουλεύουν μια χαρά και φαίνεται στον >> 4.6 ? > > FWIW, Στην πραγματικότητα σε ubuntu oneiric τουλάχιστον το θέμα αυτό > εμφανίζεται και στον 4.5. Testcase: > > apt-get install libssl-dev libcurl4-openssl-dev > wget http://github.com/bagder/curl/raw/master/docs/examples/simplessl.c > export STUFF=`pkg-config --cflags --libs openssl libcurl` > > gcc-4.4 $STUFF -simplessl.c > works ok > > gcc-4.5 $STUFF -simplessl.c > boom! (collect2: ld returned 1 exit status κλπ) > > gcc-4.6 $STUFF -simplessl.c > boom! (collect2: ld returned 1 exit status κλπ) > > Το παραπάνω οφείλεται στα patches που προσθέτει το debian/ubuntu στο > gcc και συγκεκριμμένα στο debian/patches/gcc-as-needed.diff όπου το debian > αλλάζει τα default linker specs. > > Τουτέστιν ο linker σου (ld) στο debian/ubuntu τρέχει με --as-needed > *είτε το έβαλες εσύ είτε όχι*. > > Αυτό σημαίνει ότι αν έχεις ένα object foo.o που κάνει link στο libbaz > πρέπει να βάλεις το -lbaz μετά το foo.o αλλιώς ο ld θα το παραλείψει > με αποτέλεσμα μετά να βλέπει unresolved symbols. > > Άρα λύσεις στο ubuntu oneiric: > > 1. apt-get install gcc-4.4 και compile με αυτόν διατηρώντας τα ίδια > scripts που έχεις ως τώρα. > > 2. recompile το gcc χωρίς το gcc-as-needed.diff (not recommended > καθώς νομίζω ότι το --as-needed είναι καλό default). > > 3. να αλλάξεις το script σου και να χρησιμοποιείς CFLAGS, LDFLAGS > και LIBADD όπως λένε οι προδιαγραφές (recommended). > > Χαιρετισμούς, > Παντελής > Να 'σαι καλά Παντελή ευχαριστώ για τα workarounds ! -- GPG ID: 0xD21DB2DB As you read this post global entropy rises. Have Fun ;-) Nick