[英]Where is sys/types.h located?
我剛剛發現
<stdlib.h><\/code>和
<stdio.h><\/code>標頭位於 Ubuntu 服務器的
\/usr\/include<\/code>文件夾中,但我沒有找到
sys\/types.h<\/code> 。
我開始懷疑編譯器實際上不會使用
\/usr\/include<\/code>文件夾中的頭文件。
這是真的嗎,文件在哪里?
我的Debian框(並且希望Ubuntu在熱情方面沒有過多考慮它)在/usr/include/sys/types.h
有它。
你最好的選擇是首先執行:
find /usr/include -name types.h
然后:
find / -name types.h
如果你沒有在第一個中找到它。
但是,請記住,甚至可能沒有安裝開發內容。 我想成像一個服務器盒用作服務器,如果編譯器和一堆其他東西不是默認安裝的一部分,它不會讓我感到驚訝(但它會有很多服務器的東西,如ftpd
或Apache
等等)。
如果編譯器將它定位在某個地方並且你只是不知道在哪里,你可以使用類似的東西:
echo "#include <sys/types.h>" | gcc -E -x c - | grep /types.h
找出它的來源。
要么:
echo "#include <stdio.h>" | gcc -E -x c - | grep /stdio.h
對於你擔心的另一個標題。
旁白:
gcc
命令行在預處理階段(-E
)之后停止,強制將文件視為C源代碼(-xc
)並從標准輸入(-
)檢索程序,在這種情況下從echo
語句中檢索。
最后的grep
只是剝掉了不重要的線條。
文件sys/types.h
位於/usr/include/sys/types.h
如果你得到這種致命錯誤 :
.../linux/linux_types.h:146:38: fatal error: /usr/include/sys/types.h: No
such file or directory
使用以下代碼進行修復 :
sudo apt-get install build-essential flex libelf-dev libc6-dev-amd64 binutils-dev libdwarf-dev
如果您有找到命令可用,您只需使用locate
:
-bash-3.2$ locate sys/types.h
/usr/include/sys/types.h
/usr/lib/syslinux/com32/include/sys/types.h
-bash-3.2$
這是最快捷,最簡單的方法。
僅供將來參考,我在我的debian機器上遇到了這個問題,事實證明在我的情況下
$ apt-file find /usr/include/sys/types.h
libc6-dev-i386: /usr/include/sys/types.h
libc6-dev-i386是我看似需要安裝的軟件包
在Linux上, types.h
應該在/usr/include/sys/types.h
。
在我的Slackware中,我需要安裝glibc來解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.