1

Я хотел бы знать, если перемещение исполняемого файла в каталог, отличный от того, где он установлен, не сможет работать? Я вспомнил, что это тот случай, когда Windows XP запускает исполняемый файл, щелкая его значок. Под терминалом Linux кажется, что с его путем, указанным правильно, исполняемый файл все еще может работать? Спасибо за разъяснение! С уважением!

6 ответов6

4

Пока исполняемый файл может находить свои зависимости (например, другие библиотеки в Windows), он будет работать. Если он не может по какой-либо причине (т.е. предполагает, что они находятся в одном каталоге), он не будет.

К сожалению, сообщения об ошибках, которые вы получаете из Windows, не всегда являются самыми полезными, поэтому у вас могут возникнуть проблемы с поиском всех необходимых файлов.

2

Это зависит на 100% от приложения.

Приложение само по себе просто должно найти свои зависимости или список библиотек DLL, необходимых для запуска. Он будет смотреть в текущем каталоге большую часть времени, так что обычно это не проблема.

Самая большая проблема в реестре. Если приложение записало, где оно было установлено в реестр, оно может искать определенные файлы в старом каталоге во время выполнения.

Если вы установили приложение, оно также сохраняется в реестре, и удаление из программы «Установка и удаление программ» больше не будет работать.

Если приложение не использует реестр, его можно переместить без последствий. Многие портативные приложения, работающие на флэш-накопителях, используют этот подход, и в результате их можно перемещать или удалять по мере необходимости.

1

Итак, вот фокус:

  1. Перейдите в C:\Users\\AppData\Local\
  2. Удалить IconCache.db
  3. Убить explorer.exe из диспетчера задач
  4. Снова запустите explorer.exe

Это сработает, вы увидите ваш новый значок при копировании / перемещении в следующий раз.

0

Под Linux (и UNIX в целом) большинство исполняемых файлов могут свободно перемещаться. Они обычно находят свои зависимости автоматически ... иногда используя ~/.* ("точечные файлы") ... условно названные вещи вроде ~/. rc (где "rc" первоначально означало "команда запуска", но может рассматриваться как настройки «ресурса / конфигурации»).Иногда (все чаще) пакеты UNIX / Linux создают ~/. каталог (например, ~/ .gnome /, ~/ .firefox / и т. д.).

Обычно приложение проверяет файл ~/ .*, а затем ищет файл / etc / configuration. Он может искать в других местах (например, / opt / etc / или / usr / local / etc).

Также для таких программ довольно распространено соблюдать настройки среды ... поэтому вы export (оболочки семейства Борна) или setenv (csh/tcsh) соответствующие настройки для них. Конечно, для них также характерно использование переключателя командной строки для указания на любые файлы конфигурации или ресурсы.

Обычно лучше обратиться к документации программы, чтобы узнать о файлах и настройках среды. Обычно программа позволяет переключателю командной строки игнорировать любой параметр среды, отменяя любой параметр ~/.*, который перекрывает любой параметр /etc /*, который может перекрывать любой скомпилированный в настройке. Однако это просто слабо соблюдаемое соглашение. Проверьте документы!

В целом программы UNIX/Linux гораздо менее хрупки, чем MS Windows или более старые программы MacOS, в управлении расположениями своих ресурсов. Обычно нет непрозрачных "реестра" или "веток ресурсов", чтобы скрыть эти вещи от вас.

0

обычно. Если есть общие библиотеки, их тоже нужно переместить или задать путь, чтобы он мог их найти, в зависимости от вашей операционной системы.

0

Нет технической причины, по которой вы не можете переместить исполняемый файл в любой каталог, в который хотите, и запустить его. Сам исполняемый файл не должен знать или заботиться о том, какое у него имя файла или в каком каталоге он находится. Однако исполняемый файл должен иметь возможность находить любые другие файлы, которые он хочет открыть, такие как файлы конфигурации, файлы данных, общие библиотеки и т.д. Часто исполняемый файл будет записан так, что он ожидает найти эти вещи в одном и том же каталоге. он запускается из или в подкаталоге, например, ожидаемый может ожидать, что если он запущен в:

/ Foo / Baz / bin / исполняемый

Что его конфигурационные файлы находятся в

/ Foo / Baz / и т.д. / CONFIGFILE

Если вы уверены, что исполняемый файл может найти любые другие файлы, которые ему нужно открыть, вы сможете перемещать его по мере необходимости. Под Linux команда 'strace' может быть полезна для этого, вы можете запустить exe-файл под strace и посмотреть, какие файлы он пытается открыть, а затем взять и переместить их. Кроме того, для разделяемых библиотек полезен «ldd», так как он сообщает вам, какие разделяемые библиотеки попытается открыть исполняемый файл, а какие нет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .