Где установить LD_LIBRARY_PATH на Солярисе?

Давайте посмотрим ниже, чтобы начать с

  1. Шаблон декоратора в чистом виде намеревается enhance existing behavior of an object at run time without destroying the existing interface of the object.
  2. Декорирование подразумевает улучшение существующего поведения объекта.
  3. Декорированный объект имеет тот же (базовый) интерфейс, что и декорируемый базовый объект.

Вопрос: Объект извлекается из его класса, который является временем компиляции. Теперь, как бы вы продолжили улучшать поведение?

Ответ: Используя шаблон Decorator, также известный как обертка.

Пример: у вас есть файл, который можно зашифровать, скажем, методов шифрования в настоящее время 5, в результате будет зашифрованный файл. Зашифрованный файл может быть снова зашифрован. Кроме того, давайте предположим, что существует 5 способов заархивировать файл, который впоследствии может увеличиться. Файл может быть зашифрован с помощью methodEA, затем может быть заархивирован с помощью MethodZA, затем снова может быть зашифрован с помощью methodEB, аналогичные последовательности могут создавать разные файлы результатов.

Один из хороших способов, как показано ниже.

public class TextFile{
       public void create(){/*somecode*/};
       public void format(){//code for default plain text};
}

public class AEncryptedFile extends TextFile{
        private TextFile wrapped;
        public AEncryptedFile(TextFile file){
              this.wrapped = file;
        }
        public void format(){
               super.format();
               //add enhacements for encryption type A
        }
}

public class BEncryptedFile extends TextFile{
        private TextFile wrapped;
        public BEncryptedFile(TextFile file){
              this.wrapped = file;
        }
        public void format(){
               super.format();
               //add enhacements for encryption type B
        }
}

public class AZippedFile extends TextFile{
        private TextFile wrapped;
        public BEncryptedFile(TextFile file){
              this.wrapped = file;
        }
        public void format(){
               super.format();
               //add enhacements for zip type A
        }
}

public class BZippedFile extends TextFile{
        private TextFile wrapped;
        public BEncryptedFile(TextFile file){
              this.wrapped = file;
        }
        public void format(){
               super.format();
               //add enhacements for zip type B
        }
}

public void UserClass{
    public static void main(String[] args){
          TextFile file = new BZippedFile(new AEncryptedFile(new TextFile()));
          file.format();
}

В вышеприведенном примере кода можно сказать

Объект TextFile был декорирован (обтеканием) объектом AEncryptedFile, который дополнительно декорируется BZippedFile, в каждом из этих дополнительных украшений дополнительное улучшение был создан для существующего объекта

Таким образом, существующий объект TextFile может быть передан различным методам во время выполнения, а объект может быть декорирован путем обертывания его в другой объект подтипа TextFile.

Примечание : Реализация шаблона декоратора имеет структуру LinkedList.

9
задан ceving 8 December 2016 в 12:18
поделиться

4 ответа

Обычно у меня просто был бы сценарий оболочки, который запускает приложение. В сценарии оболочки я установил бы LD_LIBRARY_PATH на то, чем я нуждаюсь в нем, чтобы быть для того приложения, затем имею сценарий, запускают то приложение. При выполнении его тот путь должен заставить путь быть установленным только для того приложения.

14
ответ дан 4 December 2019 в 09:38
поделиться

Можно найти формальное описание LD_LIBRARY_PATH на странице справочника для "ld.so.1", т.е. выполненном "человеке ld.so.1". Это также описывает некоторые другие переменные, которые соблюдает компоновщик во время выполнения.

В дополнение к LD_LIBRARY_PATH, исполняемые файлы и совместно использованные библиотеки могут также иметь встроенный путь поиска для библиотек. При запуске приложения, которое Вы связали сами, можно использовать-R опцию ld установить созданный в пути (и Sun, CC и gcc имеют опции сделать то же самое). Это может позволить Вам избегать использования LD_LIBRARY_PATH во-первых.

6
ответ дан 4 December 2019 в 09:38
поделиться

Можно использовать команду crle:

crle -l /path/to/your/lib/file

.
-1
ответ дан 4 December 2019 в 09:38
поделиться

Ответ crle наиболее правильный. В Solaris не следует использовать LD_LIBRARY_PATH . Вместо этого используйте crle. Чтобы просмотреть текущие пути, просто запустите "crle" отдельно. Чтобы обновить список, используйте crle -u -l / path / to / your / lib / directory . -u необходим для записи изменений в конфигурацию системы, в противном случае изменение будет временным. Смотрите справочную страницу для получения дополнительных опций.

1
ответ дан 4 December 2019 в 09:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: