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). Χαιρετισμούς, Παντελής