Ubuntu cross-compilation: error: two or more data types in declaration specifiers
Giorgos Keramidas
keramida at ceid.upatras.gr
Sun Mar 13 16:01:44 EET 2011
2011/3/10 Antonis Christofides <anthony at itia.ntua.gr>:
>> Επειδή το config.log είναι τεράστιο, μην το στείλεις όλο στη λίστα.
>> Ανέβασέ το κάπου που μπορούμε να το δούμε ή στείλτο μου σε προσωπικό
>> email.
>
> Είναι 23Κ. http://itia.ntua.gr/~anthony/tmp/config.log
>
> Έχω βάλει και το http://itia.ntua.gr/~anthony/tmp/config.log.libiberty
> (ήταν το config.log στη subdirectory libiberty, πιθανόν να έχει
> μεγαλύτερη σχέση).
Α, εντάξει. Τότε ξέρουμε τι φταίει. Το "confdefs.h" έχει το εξής:
#define pid_t int
Στο sys/types.h του Ubuntu έχει το εξής:
#ifndef __pid_t_defined
typedef __pid_t pid_t;
# define __pid_t_defined
#endif
Αυτό μετά το #define στο test program της libiberty γίνεται:
#ifndef __pid_t_defined
typedef __pid_t int;
# define __pid_t_defined
#endif
Το οποίο είναι άκυρο ως redefinition.
Κάτι στο configure script της libiberty ορίζει το pid_t ως 'int', και
σου χαλάει όλα τα configure checks από εκείνο το σημείο και μετά.
Μια «προσωρινή» λύση είναι να πειράξεις το sys/types.h του Ubuntu σου
και να αλλάξεις το εξής:
#ifndef __pid_t_defined
+#undef pid_t
typedef __pid_t pid_t;
# define __pid_t_defined
#endif
Δεν είναι ιδιαίτερα κομψή λύση, αλλά θα παίξει.
More information about the Linux-greek-users
mailing list