Я хотел бы знать при перемещении исполняемого файла в каталог, отличающийся от того, где он установлен, заставит его не смочь работать? Я помнил, что это имеет место под Windows XP при выполнении исполняемого файла путем нажатия на его значок. Под терминалом Linux кажется, что с его путем, указанным правильно, исполняемый файл может все еще работать? Спасибо за разъяснение! Regards!
Пока исполняемый файл может найти, что это - зависимости (другой dlls в Windows, например) затем, это будет работать. Если это не может ни по какой причине (т.е. это предполагает, что они находятся в том же каталоге), затем, это не будет.
К сожалению, сообщения об ошибках, Вы выходите из Windows, являются не всегда самыми полезными, таким образом, у Вас могли бы быть проблемы при определении местоположения всех необходимых файлов.
Это зависит 100% от приложения.
Приложение отдельно просто должно найти, что это - зависимости или список DLLs, которого это требует для выполнения. Это посмотрит в текущем каталоге для них большую часть времени, таким образом, это обычно не будет проблемой.
Самая большая проблема находится в реестре. Если приложение записало, где оно было установлено на реестре, оно может искать определенные файлы в старом каталоге во времени выполнения.
Если Вы установили приложение, это также хранится в реестре, и удаляющий от Добавляют/Удаляют, что программы больше не будут работать.
Если приложение не использует реестр, хотя, это может быть перемещено без последствия. Много портативных приложений, которые убегают флеш-накопители, проявляют этот подход, и в результате могут быть перемещены или удалены по мере необходимости.
обычно. Если существуют совместно использованные библиотеки, они, возможно, должны быть перемещены также, или набор пути, таким образом, он может найти их, в зависимости от Вашей операционной системы.
ldconfig
команда) или ими управляют путем установки LD_LIBRARY_PATH или других параметров среды LD_*. Обычно Вы пишете две или три обертки строки, чтобы установить значение LD_* и затем выполнить Вашу цель. Вы не должны только помещать настройки LD_* в свою общую среду оболочки! Подобные соображения относятся к любому GNU libc система, конечно, и некоторые из них относятся к другой версии UNIX.
– Jim Dennis
01.09.2009, 04:57
Нет никакой технической причины, что Вы не можете переместить исполняемый файл ни в какой каталог, Вы хотите и выполнить его. Сам исполняемый файл не должен знать или заботиться о том, в чем его имя файла или что каталог его. Однако исполняемый файл должен смочь найти любые другие файлы, которые он хочет для открытия, такие как конфигурационные файлы, файлы данных, общие библиотеки, и т.д. Часто времена, которые исполняемый файл будет записан таким образом, что он ожидает находить эти вещи в том же каталоге, он выполняется от или в подкаталоге, например, exeuctable, могли бы ожидать это, если он выполняется в:
/foo/baz/bin/executable
То, что его файлы конфигурации находятся в
/foo/baz/etc/configfile
Пока Вы удостоверяетесь, что исполняемый файл может найти любые другие файлы, которые он должен открыть, необходимо смочь переместить его по мере необходимости. В соответствии с Linux, команда 'strace' может быть полезна для этого, можно выполнить exe под strace и видеть, какие файлы его попытка открыться и их захватывает их и перемещает их. Кроме того, для общих библиотек 'ldd' полезно, поскольку это говорит Вам, какие общие библиотеки исполняемый файл попытается открыть и которые это не находит.
В соответствии с Linux (и UNIX в целом) большинство исполняемых файлов может быть перемещено свободно. Они обычно находят свои зависимости, автоматически... иногда использующие ~/.* ("отмечают точкой файлы")... традиционно названные вещи как ~/.rc (где 'дистанционное управление' первоначально обозначало "команду выполнения", но может считаться настройками "ресурса/конфигурации"). Иногда (все больше) пакеты UNIX/Linux будут создавать ~/. каталог (такой как ~/.gnome/, ~/.firefox/и так далее).
Обычно приложение будет проверять на ~/.* файл, затем ищите/etc/конфигурационный файл. Это может искать в других местах (таких как/opt/etc/или/usr/local/etc).
Таким программам также довольно свойственно соблюдать параметр среды... так Вы export
(Оболочки семейства границы) или setenv
(csh/tcsh) соответствующая установка установки для тех. Конечно, им также свойственно взять переключатель командной строки для указания на любые конфигурационные файлы или ресурсы.
Обычно лучше обращаться к документации программы для обнаружения о файлах и параметрах среды. Обычно программа будет позволять переключателю командной строки переопределять любой параметр среды, переопределяя любой ~/.* установка, которая переопределяет любой / и т.д. /* установка, которая могла бы переопределить любого скомпилированного в установке. Однако это - просто свободно сопровождаемая конвенция. Проверьте документы!
В общем UNIX/Linux программы намного менее хрупки, чем MS Windows или более старые программы MacOS в управлении их местоположениями ресурса. Обычно нет никакого непрозрачного "реестра" или "ветвей ресурсов" для сокрытия этих вещей от Вас.