1. 程式人生 > >解決Ubuntu下缺少sys/time.h等標頭檔案的錯誤

解決Ubuntu下缺少sys/time.h等標頭檔案的錯誤

最近學習過程中編輯程式碼時VIM 提示報錯:No matching function for call to “getitimer”(FixIt)。

Ubuntu 一般預設的C庫是在/usr/include/目錄下,比如#include <unistd.h>就是在/usr/include/目錄下查詢unistd.h檔案。

那麼回到出錯的問題上來,這是因為getitimer函式是在/usr/include/sys/time.h檔案宣告的。而我當前的Ubuntu
16.04系統中/usr/include/sys/目錄下並沒有time.h頭件,只有在/usr/include/目錄下有一個time.h標頭檔案,而這兩個time.h

標頭檔案是不一樣的,sys/time.h標頭檔案是linux系統專有的,而/usr/include/time.h標頭檔案則是C 99庫的,是跨平臺的。

所以這個問題應該是開發環境沒有配置好的原因。那怎麼解決呢?

很簡單,只需要在終端中執行下面這條命令:

sudo apt-get install libc6-dev-amd64

輸入回車後提示以下資訊:
這裡寫圖片描述
直接回車確認即可。
上面這條命令安裝了Ubuntu的開發環境需要的一個庫,同時安裝時也安裝了截圖中的幾個庫。執行完成後進入/usr/include/sys/目錄發現多了很多連結檔案。

輸入

ls -l

結果如下:
這裡寫圖片描述
可以看到time.h

是連結到../i386-linux-gnu/sys/time.h下的連結檔案。
所以安裝libc6-dev-amd64時安裝的libc6:i386的依賴庫才是解決這個問題的真正原因,驗證一下的方法是:

sudo apt-get autoremove libc6:i386

再進入/usr/include/sys/目錄會發現僅剩一個原本就存在的asoundlib.h標頭檔案。
重新執行本文的第一條命令可以將libc6:i386重新安裝回來,或者單獨安裝libc6:i386