The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Makefile+export, !*! Davs, 20-Фев-08, 10:32  [смотреть все]
Доброе время суток!
Вопрос у меня такой:
есть команда в никсах export, которая устанавливает значение системной переменной.......
В консоли и в скриптах она нормально работает, а вот когдая ее пытаюсь запихнуть в какойнить target Makefile'a, то это команда не срабатывает (пишу мне надо сделать чтот тип такого: export LD_LIBRARY_PATH = `pwd`)
  • Makefile+export, !*! angra, 13:56 , 20-Фев-08 (1)
    Команда export есть не в абстрактных никсах, а конкретно в bash, в других оболочках она может по другому называться и иметь другой синтаксис. Более того, она не устанавливает значение переменной, а делает это значение доступным для других процессов, запускаемых из этого экземпляра оболочки, что никак не мешает запущенным процессам устанавливать эту переменную в другое значение или вообще ее игнорировать. Не совсем понятно где вы это используете, что хотите получить и почему решили что это не работает.
    • Makefile+export, !*! Davs, 14:09 , 20-Фев-08 (2)
      >Команда export есть не в абстрактных никсах, а конкретно в bash, в
      >других оболочках она может по другому называться и иметь другой синтаксис.
      >Более того, она не устанавливает значение переменной, а делает это значение
      >доступным для других процессов, запускаемых из этого экземпляра оболочки, что никак
      >не мешает запущенным процессам устанавливать эту переменную в другое значение или
      >вообще ее игнорировать. Не совсем понятно где вы это используете, что
      >хотите получить и почему решили что это не работает.

      оболочка bash. В консоли и в скриптах она (функция export) нормально работает
      среда: FreeBSD6.2
      мне надо чтобы после выполнения определенного target'a make'a у меня это значение этой сист переменной было задано тем что надо.

      П.С. Дело обстоит так: мне надо чтобы после выполнения make install у меня в системной переменной LD_LIBRARY_PATH был задан путь к текущей директории. В шелле это делается - export LD_LIBRARY_PATH=`pwd` ...... В makefile это не пашет...... :(

      • Makefile+export, !*! angra, 14:22 , 20-Фев-08 (3)
        Поищите в makefile LD_LIBRARY_PATH, возможно она там переопределяется. Кроме того, не забывайте что нет понятия системных переменных. Есть просто переменные установленные в данном экземпляре запущенной оболочки, часть из них распознается и используется самим bash, другие могут влиять на дочерние процессы, а могут и не влиять. Если мне не изменяет память, то LD_LIBRARY_PATH указывает путь к разделяемым библиотекам, но для чего нужно их переопределение в момент make install (который просто распихивает файлы по нужным директориям) для меня загадка
        • Makefile+export, !*! Davs, 15:40 , 20-Фев-08 (4)
          >Поищите в makefile LD_LIBRARY_PATH, возможно она там переопределяется. Кроме того, не забывайте
          >что нет понятия системных переменных. Есть просто переменные установленные в данном
          >экземпляре запущенной оболочки, часть из них распознается и используется самим bash,
          >другие могут влиять на дочерние процессы, а могут и не влиять.
          >Если мне не изменяет память, то LD_LIBRARY_PATH указывает путь к разделяемым
          >библиотекам, но для чего нужно их переопределение в момент make install
          >(который просто распихивает файлы по нужным директориям) для меня загадка

          1) Я создаю свой makefile
          2) для своей проги мне надо дописать path чтобы она видела библиотеку..........

  • Makefile+export, !*! Аноним, 07:14 , 21-Фев-08 (5)
    Makefile:

    t1:
            @echo t1
            @env | grep LD_LIBRARY_PATH || true

    t2:
            @echo t2:pre
            @LD_LIBRARY_PATH=aaa env | grep LD_LIBRARY_PATH || true
            @echo t2:post
            @env | grep LD_LIBRARY_PATH || true

    t3:
            @echo t3:pre
            @export LD_LIBRARY_PATH=aaa; env | grep LD_LIBRARY_PATH || true
            @echo t3:post
            @env | grep LD_LIBRARY_PATH || true

    t4:
            @echo t4:pre
            @env LD_LIBRARY_PATH=aaa env | grep LD_LIBRARY_PATH || true
            @echo t4:post
            @env | grep LD_LIBRARY_PATH || true

    % make t1
    t1

    % make t2
    t2:pre
    LD_LIBRARY_PATH=aaa
    t2:post

    % make t3
    t3:pre
    LD_LIBRARY_PATH=aaa
    t3:post

    % make t4
    t4:pre
    LD_LIBRARY_PATH=aaa
    t4:post

    Самое правильное, думается, t4.

    • Makefile+export, !*! Davs, 10:43 , 21-Фев-08 (6)
      >[оверквотинг удален]
      >t3:pre
      >LD_LIBRARY_PATH=aaa
      >t3:post
      >
      >% make t4
      >t4:pre
      >LD_LIBRARY_PATH=aaa
      >t4:post
      >
      >Самое правильное, думается, t4.

      Я испробовал все 4 варианта..............
      но строчка ----  @env | grep LD_LIBRARY_PATH || true
      выводит то состояние переменной, что и было до "изменения" ....
      после выполнения makefile'a значение переменной остается таким же как и до его запуска :(

      • Makefile+export, !*! newser, 12:29 , 21-Фев-08 (7)
        >[оверквотинг удален]
        >>LD_LIBRARY_PATH=aaa
        >>t4:post
        >>
        >>Самое правильное, думается, t4.
        >
        >Я испробовал все 4 варианта..............
        >но строчка ----  @env | grep LD_LIBRARY_PATH || true
        >выводит то состояние переменной, что и было до "изменения" ....
        >после выполнения makefile'a значение переменной остается таким же как и до его
        >запуска :(

        Само собой. То, чего Вы хотите, средствами make сделать не получится. За объяснениями, почему так, обращайтесь к литературе.

      • Makefile+export, !*! Гость, 23:04 , 21-Фев-08 (8)
        >Я испробовал все 4 варианта..............
        >но строчка ----  @env | grep LD_LIBRARY_PATH || true
        >выводит то состояние переменной, что и было до "изменения" ....
        >после выполнения makefile'a значение переменной остается таким же как и до его
        >запуска :(

        Специально для этого и написал, мля. Переменную надо устанавливать для КАЖДОЙ команды. Либо запустить еще одну копию make.

        Если ты собрался менять из Makefile переменные в вызывающем make экземпляре shell'а или на весь Makefile, то это, разумеется, сделать нельзя.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру