我想編譯一個包含kernel-devel軟件包頭文件的庫。我鏈接了合適的頭文件,但現在我在這些頭文件中出現編譯錯誤。Linux內核頭文件錯誤
/usr/include/asm-generic/bitops/fls64.h: In function ‘int fls64(__u64)’:
/usr/include/asm-generic/bitops/fls64.h:10: error: ‘fls’ was not declared in this scope
/usr/include/asm-generic/bitops/fls64.h:11: error: ‘fls’ was not declared in this scope
而且,這裏有從ASM-通用/ bitops/fls64.h
#ifndef _ASM_GENERIC_BITOPS_FLS64_H_
#define _ASM_GENERIC_BITOPS_FLS64_H_
#include <asm/types.h>
static inline int fls64(__u64 x)
{
__u32 h = x >> 32;
if (h)
return fls(h) + 32;
return fls(x);
}
#endif /* _ASM_GENERIC_BITOPS_FLS64_H_ */
正如你所看到的代碼 「返回FLS(H)」,有沒有FLS的定義()。我可以通過包含「fls.h」來解決這個問題,但是我想在標準內核頭文件中解決這些錯誤?
任何指針,可以解釋爲什麼這樣,我能做些什麼來解決這些問題?順便說一句,我在這裏提到的錯誤只是冰山一角。在多個這樣的頭文件中有很多這樣的(缺失解碼)錯誤。
幫助將不勝感激。謝謝!
rgds/R。
PS:有些系統的詳細信息:
Linux發行版:CentOS的(5.5)
[[email protected] common]$ uname -a
Linux localhost.localdomain 2.6.18-238.9.1.el5 #1 SMP Tue Apr 12 18:10:56 EDT 2011 i686 i686 i386 GNU/Linux
[[email protected] common]$ cat /proc/version
Linux version 2.6.18-238.9.1.el5 ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) #1 SMP Tue Apr 12 18:10:56 EDT 2011
請發佈更多來自編譯器的輸出。真正的錯誤可能在您引用的摘錄之上。 – 2011-05-20 08:46:38
羅賓,我沒有發佈更多,因爲我認爲這是無關緊要的。我擔心的是我認爲一個標準的Linux頭文件fls64.h正在使用一個沒有定義的函數。這是正常的嗎? – Raj 2011-05-20 12:13:37
我認爲這也取決於如何配置內核。代碼是標準的,但配置可能有1000或更多的可能性。 – Jiang 2011-05-20 21:35:35