Con respecto a, "¿Cuál es la diferencia entre cpp y otros binarios (gcc y clang)? 'ls -la /usr/bin' claramente demuestra que ninguno de ellos son enlaces simbólicos."
/usr/bin/clang
, /usr/bin/gcc
y /usr/bin/cpp
son enlaces duros al mismo binario. Un ls -il
de los tres mostrará el mismo número de inodo, un recuento de enlaces equivalente (por ejemplo 76) y un hash 256shasum
para cada uno con el mismo valor.
$ ls -il /usr/bin/clang /usr/bin/gcc /usr/bin/cpp
1152921500312436371 -rwxr-xr-x 76 root wheel 167136 Dec 2 02:00
/usr/bin/clang
1152921500312436371 -rwxr-xr-x 76 root wheel 167136 Dec 2 02:00
/usr/bin/cpp
1152921500312436371 -rwxr-xr-x 76 root wheel 167136 Dec 2 02:00
/usr/bin/gcc
$ shasum -a 256 /usr/bin/clang /usr/bin/gcc /usr/bin/cpp
ca08407ee7e1a179d096fe27b8edef2a24cb33402f6338654e1b25589df9a4ba
/usr/bin/clang
ca08407ee7e1a179d096fe27b8edef2a24cb33402f6338654e1b25589df9a4ba
/usr/bin/gcc
ca08407ee7e1a179d096fe27b8edef2a24cb33402f6338654e1b25589df9a4ba
/usr/bin/cpp
Por lo tanto, al ejecutar cualquiera de estos, el nombre elegido para la ejecución ofrece la opción de permitir un comportamiento diferente para el mismo archivo.