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