我最近從 Kubuntu 12.04 升級到 13.04,完全重新安裝。
使用海灣合作委員會4.7.3。我編譯了一些程式發現沒有/usr/include/sys
目錄。即 、types.h
、stat.h
等不存在。它們存在於include/linux
目錄中,但不存在include/sys
。
這是怎麼回事?
答案1
如果您在 64 位元上使用 Ubuntu(我現在無法在 32 位元系統上準確地發送文字),那麼問題的目錄是:
/usr/include/x86_64-linux-gnu/sys
/usr/include/sys
現在,有了這些信息,如果您確實需要在該位置 ( ) 上使用這些文件,您可以在終端上使用這些文件建立符號連結:
sudo ln -s /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/sys/types.h
sudo ln -s /usr/include/x86_64-linux-gnu/sys/stat.h /usr/include/sys/stat.h
# ...etc
答案2
如果您使用 64 位元 Linux,請安裝 libc6-dev-amd64。在 ubuntu 終端機上輸入以下命令:
sudo apt-get install libc6-dev-amd64
答案3
讓我們檢查一下 gcc 的預設包含搜尋路徑是什麼。從這個答案,我們得到這個命令:
gcc -xc -E -v -
在輸出的最後,我在我的機器上看到了這個:
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
注意倒數第二行。這意味著當您使用 編譯 C 檔案時,gcc 將在嘗試之前#include <sys/stat.h>
查找,而無需我們符號連結任何內容。/usr/include/x86_64-linux-gnu/sys/stat.h
/usr/include/sys/stat.h
答案4
由於我的架構是 amd64,因此沒有libc6-dev-amd64
.要安裝的套件是libc6-dev-i386
.
這修復了 CPAN 包的依賴性。