我編譯了gnu標準庫並將其安裝在$GLIBC_INST
中。爲什麼stddef.h不在/ usr/include中?
現在,我嘗試編譯非常簡單PROGRAMM(只使用一個#包括:#include <stdio.h>
):
gcc --nostdinc -I$GLIBC_INST/include foo.c
彙編(?預處理器)告訴我,它沒有找到stddef.h
。
事實上,$GLIBC_INST/include
中沒有一個(在/usr/include
中也沒有)。但是,我在/usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/include
中發現了stddef.h
。
爲什麼該文件不在/usr/include
下?我認爲它屬於標準C庫,應該安裝在$GLIBC_INST/include
。
如何編譯我的foo.c
與新安裝的標準庫,當它似乎沒有與stddef.h
?
編輯:澄清
我覺得這個問題的標題是不是最佳的。正如一些答案指出的那樣,stddef.h
不在/usr/include
(或$GLIBC_INST/include
)中。我明白這一點。
但我想知道如何繼續使用我想要使用的$GLIBC_INST
。對我來說似乎很明顯(儘管我可能在這裏是錯誤的),我需要調用gcc與--nostdinc
以便不使用系統安裝的頭文件。 這意味着我使用-I$GLIB_INST/include
。這很清楚。
然而,我還不清楚的是:當我還加入-I/usr/lib/gcc/x86..../include
時,我怎麼能確定我確實有新編譯的glibc的最新頭文件?
您能否確認'gcc'確實指向您的5.3.0安裝,例如,使用哪個'gcc'? –
如果添加'-I'選項,則編譯器在查看標準目錄之前先查看添加的包含路徑。使用'--nostdinc'你確定你正在使用新安裝的頭文件。 – LPs
此外,請參閱http://stackoverflow.com/questions/31285258/why-usr-include-linux-stddef-h-is-empty –