C++ 什么是重要的目录a c++;程序员应该知道linux文件系统上的什么?

C++ 什么是重要的目录a c++;程序员应该知道linux文件系统上的什么?,c++,include,filesystems,directory-structure,C++,Include,Filesystems,Directory Structure,这是一个困扰了我一年多的问题,但我从来没有费心去回答它。。。直到今天 我注意到在'/usr/local/include/SFML/'下安装了SFML“库” 如果我查看该目录,我会发现它主要包含头文件。所以我猜“include”目录应该包含头文件而不是对象文件 这就提出了一个问题。“cmath”或“vector”在哪里 事实证明,使用find,它们被放置在“/usr/include/c++/4.7/cmath”-基本上是“/usr/include/”中 那么,本地include('/usr/loc

这是一个困扰了我一年多的问题,但我从来没有费心去回答它。。。直到今天

我注意到在'/usr/local/include/SFML/'下安装了SFML“库”

如果我查看该目录,我会发现它主要包含头文件。所以我猜“include”目录应该包含头文件而不是对象文件

这就提出了一个问题。“cmath”或“vector”在哪里

事实证明,使用find,它们被放置在“/usr/include/c++/4.7/cmath”-基本上是“/usr/include/”中

那么,本地include('/usr/local/include')和include目录('/usr/include')之间有什么区别呢

在文件系统中,我还看到许多“lib”、“lib32”和“lib64”控制器。我猜编译的.cpp文件或对象文件都在这些目录中。我猜lib是在64位体系结构进入游戏之前使用的旧目录。我猜现代公认的做法是将32位对象文件放在lib32中,将64位版本放在lib64中。对吗

有一个“/usr/local/lib”目录

但是也有一个'/usr/lib'目录。再说一次,为什么还有一个“本地”的呢


此外,在“/usr/”中还有一个“lib”、“lib32”和“lib64”。但是,在“/usr/”中只有一个“lib”目录。为什么会这样?

我不确定这个问题是否有具体的答案,但我会尝试至少给出一些指导

通常,
/usr/local
用于“自定义安装”。也就是说,它不是基本安装的一部分。当然,这是一个指导原则,所以您仍然可以找到一些安装在
/usr/lib
中的东西,而实际上它应该安装在
/usr/local/lib
(或者
/usr/local/lib{32,64}
中,视情况而定)

是的,
lib32
lib64
适用于与大小相关的库(尽管如果在lib64中安装32位库,在lib32中安装64位库,程序会运行得非常好,但如果这样做,就很难了解发生了什么!)

有时是
lib
lib64
lib
lib32
。这取决于分布情况。如果存在
lib32
lib64
,则
lib
通常用于保存“与大小无关”的内容,例如存储在
/usr/lib
中的配置文件

当然还有其他有用的目录需要了解-您的主目录,
/var/log/
用于日志文件,
/var/run
用于锁定文件和
.pid
文件以及其他“状态”文件,并且还有一个
/var/lib
目录,其中似乎包含一些随机选择的特定于组件的库。
/opt
(这是
/usr/local/
的另一种变体)有时用于存储二进制文件等

编辑:

另一类可能有用的目录是
/proc
/sys
/dev
目录

内核中的
procfs
文件系统驱动程序支持的
/proc
提供有关系统正在执行的操作的信息,例如
cat/proc/meminfo
将显示内存的统计信息(及其使用情况),
cat/proc/cpuinfo
将显示机器的CPU<代码>cat/proc/self/status将显示当前进程的状态。如果要查看其他进程的功能,
cat/proc/xx/status
,其中
xx
是进程id(一个数字),将显示其他进程的功能。如果你往里面看的话,你会发现很多有用的东西——其中一些比其他的更有用

/sys
的结构与
/proc
类似,但它更面向“系统”,其中
/proc
更多地是关于流程的,但有一些重叠

/dev/
是设备的“根”
/dev/sda
将是您的硬盘之一(但可能有另一个名称,具体取决于您拥有的硬盘)

您应该阅读以下内容(简短版本):

还有这个(所有无聊的细节):


Hmm,好的,谢谢,gcc库之所以放在/usr/include中是因为它们是标准的东西,但sfml放在本地include目录中是因为sfml有点专业或非标准,或者通常不认为在标准安装中可用?“我遵循的正确吗?是的,类似的东西。”Matstpeterson在SysV(和大多数商业Unices)下,不会有一个
/usr/local/
。每个“包”在
/opt
(可选)下都有自己的目录,应该完全包含在其中。这样做的最大优点是,您可以使用
rm-fr/opt/package\u name
(假设拥有足够的权限)完全删除包。这还意味着编译器将只查找包含文件和针对您指定包的库的链接(
-I/opt/package\u name/include
-L/opt/package\u name/lib
)。这不是
Linux
,而是
GNU-Linux
——现在开始,从现在开始不再犯罪。这真的那么重要吗?