(Предпочтительно) расположение стека времени выполнения отличается в зависимости от аппаратной архитектуры. Но что касается собственно программы и разделяемых библиотек, для динамически подключаемого исполняемого файла расположение отображаемых областей в памяти определяется компоновщиком. Обычно не ядро решает, где располагать компоненты пользовательской программы. Архитектура ЦП также не подразумевает порядок. На одном и том же оборудовании и даже в пределах одной работающей ОС (то есть ядра) мы можем представить, что разные компоновщики упорядочивают его по-разному (вызов exec Linux извлекает имя компоновщика из файла ELF; см. elf_interpreter
переменная в load_elf_binary ()
в fs / binfmt_elf.c
).
В Linux динамический компоновщик по умолчанию ld-linux
является частью glibc. Как он пытается сопоставить объекты, можно увидеть в функции _dl_map_object_from_fd ()
в elf / dl-load.c
исходного кода.Иногда учитываются предпочтения в исполняемом файле (которые предположительно зависят от компилятора и компоновщика, создавшего исполняемый файл), а в некоторых случаях расположение карты памяти определяется ядром.
В Google есть информация о динамических компоновщиках и их зависимости от архитектуры, например:
Entonces encontré la solución para el comando no encontrado Cambié los permisos del directorio desde donde Shell busca el comando (/root/.local/bin )y todos los archivos que jhbuild quiere crear desde el comando (por ejemplo /jhbuild,/jhbuild/.cache ). Los creo manualmente y cambié sus permisos de manera similar.
Поведение, которое вы испытываете, связано не с разрешениями или расположением двоичного файла, а с пользователем, выполняющим его. Укажите переменную среды JHBUILD_RUN_AS_ROOT
с любым значением, например. env JHBUILD_RUN_AS_ROOT= jhbuild...
, чтобы иметь возможность запускать jhbuild
от имени пользователя root.
Это довольно недокументированная функция, я уверен, что однажды предложил улучшить обратную связь с приложением, которая была проигнорирована; см.https://github.com/GNOME/jhbuild/blob/master/jhbuild/main.py#L97для понимания того, почему это должно работать.