LINUX.ORG.RU

Как зделать make install


0

0

Есть у меня штук десять программ в исходных кодах, и используя Slackware, я пришёл к выводу- что неплохо бы сделать пакеты с готовыми программами. Но вся беда заключается в том, что некотрые программы пишут внутри себя пути к библиотекам и конфигурационным файлам основываясь на --prefix который использовался при компиляции. Вот пример:
andreik@dumb:~/bins/bin$ ldd /usr/local/bin/wmaker
libwraster.so.2 => /usr/local/lib/libwraster.so.2 (0x40026000)
libtiff.so.3 => /usr/lib/libtiff.so.3 (0x4003a000)
libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x40079000)
libpng.so.2 => /usr/lib/libpng.so.2 (0x40087000)
libz.so.1 => /usr/lib/libz.so.1 (0x400b1000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x400c0000)
libungif.so.4 => /usr/lib/libungif.so.4 (0x400e0000)
libm.so.6 => /lib/libm.so.6 (0x400e8000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x4010a000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40118000)
libdl.so.2 => /lib/libdl.so.2 (0x401f1000)
libc.so.6 => /lib/libc.so.6 (0x401f5000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
andreik@dumb:~/bins/bin$
Как видно в самой первой строке libwraster.so.2 указывает на /usr/local/lib/libwraster.so.2, следовательно если я укажу при компиляции --prefix=/home/andreik/bins/ то работать эта программа после установки в /usr не будет. Есть ли решение этой проблемы? Заранее всем спасибо.

anonymous

Гм... Меня вот тоже интересует эта "проблема". В общем, есть ряд путей.

Если почитать ДО КОНЦА мануал на GNU make (лежит на www.gnu.org), то
можно заметить рекомендацию по поводу использования переменной DESTDIR.
Т. е. если сделать make DESTDIR=/MY/DIR install, то правильно написанные
правила make должны бы все в /MY/DIR поставить, считая, что это корневой
каталог.(слэш в конце указывать НЕ НАДО).

Но есть и плохая новость: это работает далеко не всегда (некоторые
рассчитывают на BSD make или на какой другой). Поэтому вначале стоит
воспользоваться ключами -n и -w (make -n -w DESTDIR=/MY/DIR install),
чтобы убедиться, что все пучком. Описание данных опций есть ДАЖЕ в
man make. Опция -n заставит make выводить команды, но не исполнять их,
а -w печатать текущий каталог примерно так:
make: Entering directory `/usr/src/myprog/src'
...
...
...
make: Leaving directory `/usr/src/myprog/src'
Подробно обо всем этом - в указанном выше мануале :)

Dimai
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.