В системах Unix-стиля структура данных, которая представляет объекты файловой системы (другими словами, данные о файле), хранится в том, что называется "inode".
Имя файла - это просто ссылка на этот inode, и называется "жесткой ссылкой". Нет никакой разницы между первым именем, которое дается файлу, и любой последующей ссылкой. Так что ответ "да": жесткая ссылка - это обычный файл, и, действительно, обычный файл - это жесткая ссылка.
Команда ls
покажет вам, сколько жестких ссылок существует на файл.
Например:
seumasmac@comp:~$ echo Hello > /tmp/hello.txt
seumasmac@comp:~$ ls -l /tmp/hello.txt
-rw-rw-r-- 1 seumasmac seumasmac 6 Oct 4 13:05 /tmp/hello.txt
Здесь мы создали файл под названием /tmp/hello.txt
. 1
в выводе ls -l
указывает на то, что на этот файл существует 1 жесткая ссылка. Этой жесткой ссылкой является само имя файла /tmp/hello.txt
.
Если теперь мы создадим еще одну жесткую ссылку на этот файл:
seumasmac@comp:~$ ln /tmp/hello.txt /tmp/helloagain.txt
seumasmac@comp:~$ ls -l /tmp/hello*
-rw-rw-r-- 2 seumasmac seumasmac 6 Oct 4 13:05 /tmp/helloagain.txt
-rw-rw-r-- 2 seumasmac seumasmac 6 Oct 4 13:05 /tmp/hello.txt
то увидим, что оба имени файлов указывают на наличие 2 жестких ссылок на файл. Ни одно из этих имен не является "правильным" именем файла, они оба одинаково правильные. Мы видим, что они оба указывают на один и тот же inode (в данном случае 5374043):
seumasmac@comp:~$ ls -i /tmp/hello*
5374043 /tmp/helloagain.txt 5374043 /tmp/hello.txt
Существует распространенное заблуждение, что для каталогов это разные вещи. Я слышал, как люди говорили, что количество ссылок, возвращаемых ls
для каталога, - это количество подкаталогов, включая .
и ...
, что неверно. Или, по крайней мере, хотя это и даст вам правильное число, оно будет правильным по неправильным причинам!
Если мы создадим каталог и выполним ls -ld
, то получим:
seumasmac@comp:~$ mkdir /tmp/testdir
seumasmac@comp:~$ ls -ld /tmp/testdir
drwxrwxr-x 2 seumasmac seumasmac 4096 Oct 4 13:20 /tmp/testdir
Это показывает, что есть 2 жесткие ссылки на этот каталог. Это:
/tmp/testdir
/tmp/testdir/.
Обратите внимание, что /tmp/testdir/...
является не ссылкой на этот каталог, это ссылка на /tmp
. И это объясняет, почему работает "количество подкаталогов". Когда мы создаем новый подкаталог:
seumasmac@comp:~$ mkdir /tmp/testdir/dir2
seumasmac@comp:~$ ls -ld /tmp/testdir
drwxrwxr-x 3 seumasmac seumasmac 4096 Oct 4 13:24 /tmp/testdir
теперь вы видите, что есть 3 жесткие ссылки на каталог /tmp/testdir
. Это:
/tmp/testdir
/tmp/testdir/.
/tmp/testdir/dir2/..
Таким образом, каждый новый подкаталог будет увеличивать количество ссылок на одну, потому что ...
записи, которую он содержит.
En los sistemas que usan el conjunto de compiladores GCC, el compilador C++ esg++
(cpp
es el preprocesador C ).
Un nombre común para encontrar un compilador de C++ es c++
. Suele ser un enlace simbólico a un compilador de C++ apropiado como g++
o clang++
o cualquiera que sea el compilador del sistema instalado (si está instalado ).
El mensaje de error del script configure
indica que no hay un compilador de C++ instalado en su sistema. En su Linux, el compilador de C++ se instala por separado del compilador de C.
Para instalar el compilador GCC C++ en CentOS:
yum install gcc-c++