The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Makefile+export"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Makefile+export"  
Сообщение от Davs email(ok) on 20-Фев-08, 10:32 
Доброе время суток!
Вопрос у меня такой:
есть команда в никсах export, которая устанавливает значение системной переменной.......
В консоли и в скриптах она нормально работает, а вот когдая ее пытаюсь запихнуть в какойнить target Makefile'a, то это команда не срабатывает (пишу мне надо сделать чтот тип такого: export LD_LIBRARY_PATH = `pwd`)
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

  • Makefile+export, angra, 13:56 , 20-Фев-08, (1)  
    • Makefile+export, Davs, 14:09 , 20-Фев-08, (2)  
      • Makefile+export, angra, 14:22 , 20-Фев-08, (3)  
        • Makefile+export, Davs, 15:40 , 20-Фев-08, (4)  
  • Makefile+export, Аноним, 07:14 , 21-Фев-08, (5)  
    • Makefile+export, Davs, 10:43 , 21-Фев-08, (6)  
      • Makefile+export, newser, 12:29 , 21-Фев-08, (7)  
      • Makefile+export, Гость, 23:04 , 21-Фев-08, (8)  

Сообщения по теме [Сортировка по времени | RSS]


1. "Makefile+export"  
Сообщение от angra (ok) on 20-Фев-08, 13:56 
Команда export есть не в абстрактных никсах, а конкретно в bash, в других оболочках она может по другому называться и иметь другой синтаксис. Более того, она не устанавливает значение переменной, а делает это значение доступным для других процессов, запускаемых из этого экземпляра оболочки, что никак не мешает запущенным процессам устанавливать эту переменную в другое значение или вообще ее игнорировать. Не совсем понятно где вы это используете, что хотите получить и почему решили что это не работает.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Makefile+export"  
Сообщение от Davs email(ok) on 20-Фев-08, 14:09 
>Команда export есть не в абстрактных никсах, а конкретно в bash, в
>других оболочках она может по другому называться и иметь другой синтаксис.
>Более того, она не устанавливает значение переменной, а делает это значение
>доступным для других процессов, запускаемых из этого экземпляра оболочки, что никак
>не мешает запущенным процессам устанавливать эту переменную в другое значение или
>вообще ее игнорировать. Не совсем понятно где вы это используете, что
>хотите получить и почему решили что это не работает.

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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Makefile+export"  
Сообщение от angra (ok) on 20-Фев-08, 14:22 
Поищите в makefile LD_LIBRARY_PATH, возможно она там переопределяется. Кроме того, не забывайте что нет понятия системных переменных. Есть просто переменные установленные в данном экземпляре запущенной оболочки, часть из них распознается и используется самим bash, другие могут влиять на дочерние процессы, а могут и не влиять. Если мне не изменяет память, то LD_LIBRARY_PATH указывает путь к разделяемым библиотекам, но для чего нужно их переопределение в момент make install (который просто распихивает файлы по нужным директориям) для меня загадка
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Makefile+export"  
Сообщение от Аноним (??) on 21-Фев-08, 07:14 
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.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Makefile+export"  
Сообщение от Davs email(ok) on 21-Фев-08, 10:43 
>[оверквотинг удален]
>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 значение переменной остается таким же как и до его запуска :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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