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

时间:2013-06-24 12:37:32

标签: c++ include filesystems directory-structure

这个问题让我困惑了一年多,但我从来没有费心去尝试回答......直到今天......

我注意到我在'/ 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'目录。这是为什么?

2 个答案:

答案 0 :(得分:6)

我不确定这个问题是否有具体的答案,但我会尽量给出一些指导。

通常/usr/local用于“自定义安装”。也就是说,它不是基本安装的一部分。当然,这是一个指南,因此您仍然可以找到/usr/lib中安装的一些内容,它们应该真正安装在/usr/local/lib(或/usr/local/lib{32,64}中)。

是的,lib32lib64适用于与大小相关的库(尽管如果在lib64中安装32位库,在lib32中安装64位库,程序将完美运行 - 如果你这样做,那就更难理解发生的事情!)。

有时它是liblib64liblib32。这取决于分布。如果有lib32lib64lib通常会保存“与大小无关”的内容,例如存储在/usr/lib中的配置文件。

肯定有其他有用的目录 - 您的主目录,/var/log/表示日志文件,/var/run表示锁定文件和.pid文件以及其他“状态”文件对于特定的应用程序,也有一个/var/lib目录 - 它似乎包含一些随机选择的特定于组件的库。 /opt(这是/usr/local/的另一种变体)有时用于存储二进制文件等。

编辑:

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

内核中的/proc文件系统驱动程序支持的

procfs提供有关系统正在执行的操作的信息,例如: cat /proc/meminfo将显示内存的统计信息(及其用法),cat /proc/cpuinfo将显示该机器的CPU。 cat /proc/self/status将显示当前进程的状态。如果您想查看其他进程的作用,cat /proc/xx/status,其中xx是进程ID(数字)将显示其他进程正在执行的操作。如果你看看里面有更多可用 - 其中一些比其他更有用。

/sys/proc的结构类似,但其内容更加“系统”,其中/proc更多关于流程,但存在一些重叠。

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

答案 1 :(得分:1)

你应该读这个(对于简短版本):

http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

和这(对于所有无聊的细节):

http://www.pathname.com/fhs/pub/fhs-2.3.html