QT4.8.1和Qt4.8.4編譯X86出錯:/usr/include/linux/futex.h:96: 錯誤:‘u32’ 在此作用域中尚未聲明

最近在編譯QT4.8.1和QT4.8.4的X86版本時都出現如下錯誤,從網上查到解決方法如下:

 

出錯信息:

/usr/include/linux/futex.h:96: 錯誤:‘u32’ 在此作用域中尚未聲明
/usr/include/linux/futex.h:96: 錯誤:expected primary-expression before ‘unsigned’
/usr/include/linux/futex.h:97: 錯誤:‘u32’ 在此作用域中尚未聲明
/usr/include/linux/futex.h:97: 錯誤:‘uaddr2’ 在此作用域中尚未聲明
/usr/include/linux/futex.h:97: 錯誤:‘u32’ 在此作用域中尚未聲明
/usr/include/linux/futex.h:97: 錯誤:‘u32’ 在此作用域中尚未聲明
/usr/include/linux/futex.h:97: 錯誤:initializer 表達式列表被看作複合表達式
/usr/include/linux/futex.h:100: 錯誤:‘u32’ 在此作用域中尚未聲明
/usr/include/linux/futex.h:100: 錯誤:‘uaddr’ 在此作用域中尚未聲明
/usr/include/linux/futex.h:100: 錯誤:expected primary-expression before ‘struct’
/usr/include/linux/futex.h:100: 錯誤:expected primary-expression before ‘int’
/usr/include/linux/futex.h:100: 錯誤:initializer 表達式列表被看作複合表達式
gmake[1]: *** [.obj/release-shared/qmutex_unix.o] 錯誤 1
gmake[1]: Leaving directory `/usr/local/qt/src/corelib'
gmake: *** [sub-corelib-make_default-ordered] 錯誤 2

 

解決方法:

使用gmake編譯前需要修改/usr/include/linux/futex.h:
 (1)在第4行前插入下面內容:
        #include <linux/types.h>
 (2)替換第108行至113行之間的“u32”爲“__u32”行數不一定是108-113,把這個改一下就行了,u32前面是兩個下劃線__,而不是一個_

long do_futex(u32 *uaddr, int op, u32 val, unsigned long timeout,
                u32 *uaddr2, u32 val2, u32 val3);
 extern int
handle_futex_death(u32 *uaddr, struct task_struct *curr, int pi);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章