Nehmen wir an, dass der Stammordner meiner Arbeitsmappe lautet frameworks/av
und dieser Ordner den folgenden Inhalt hat:
-rw-rw-r-- 1 <user> <user> 94 Mar 21 14:34 Android.bp
drwxrwxr-x 8 <user> <user> 4096 Mar 21 14:34 camera/
-rw-rw-r-- 1 <user> <user> 5394 Jul 16 2018 CleanSpec.mk
drwxrwxr-x 4 <user> <user> 4096 Jul 16 2018 cmds/
drwxrwxr-x 8 <user> <user> 4096 Jul 16 2018 drm/
drwxrwxr-x 2 <user> <user> 4096 Mar 26 21:30 .git/
drwxrwxr-x 8 <user> <user> 4096 Mar 21 14:34 include/
drwxrwxr-x 25 <user> <user> 4096 Mar 21 14:34 media/
-rw-rw-r-- 1 <user> <user> 0 Mar 2 2018 MODULE_LICENSE_APACHE2
-rw-rw-r-- 1 <user> <user> 17680 Mar 2 2018 NOTICE
-rw-rw-r-- 1 <user> <user> 76 Jul 16 2018 OWNERS
drwxrwxr-x 3 <user> <user> 4096 Mar 21 14:34 packages/
drwxrwxr-x 14 <user> <user> 4096 Mar 21 14:34 services/
drwxrwxr-x 2 <user> <user> 4096 Jul 16 2018 soundtrigger/
drwxrwxr-x 3 <user> <user> 4096 Mar 21 14:34 tools/
In frameworks/av/include/media/stagefright
finde ich diesen Link, foundation
, der laut seiner Beschreibung auf Folgendes verweisen sollte frameworks/av/foundation/...
:
lrwxrwxrwx 1 <user> <user> 57 Jul 16 2018 foundation -> ../../../foundation/include/media/stagefright/foundation//
Was mich wirklich verwirrt, ist, dass foundation
in kein Ordner vorhanden ist frameworks/av
, ich dem Link aber trotzdem problemlos folgen kann. Das eigentliche Ziel, das von angegeben wird readlink -f foundation
, ist frameworks/av/media/libstagefright/foundation/include/media/stagefright/foundation
.
Was ist hier los? Wie kann man foundation
auf magische Weise in übersetzen media/libstagefright/foundation
?
Antwort1
Wenn Sie dort hinabsteigen, frameworks/av/include/media/stagefright
gibt es mindestens einen symbolischen Link, den Sie durchlaufen. Tatsächlich ist der logische Pfad vorhanden, frameworks/av/include/media/stagefright
der physische jedoch nicht.
Dann geht der betreffende Symlink drei Ebenen nach oben ( ../../../
) und von dort weiter, aber dabei wird die physische Verzeichnisstruktur verwendet, die Sie offensichtlich nicht kennen. Ihre Shell kann jedoch dennoch den logischen Pfad verfolgen.