簡體   English   中英

"sys\/types.h 位於何處?"

[英]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

如果你沒有在第一個中找到它。

但是,請記住,甚至可能沒有安裝開發內容 我想成像一個服務器盒用作服務器,如果編譯器和一堆其他東西不是默認安裝的一部分,它不會讓我感到驚訝(但它會有很多服務器的東西,如ftpdApache等等)。

如果編譯器將它定位在某個地方並且你只是不知道在哪里,你可以使用類似的東西:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM