Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Как указать откуда грузить shared object?


Автор: nickless 9.9.2006, 17:53
Проблема такая,
надо написать программку с OpenGLUT (очень надо), запускать её надо будет в универе, а там openglut как раз нету и установить это дело глобально я естественно тоже не могу.

Написал для проверки небольшую программку, скопировал хидеры и либы в локальную папку, дома всё нормально, а в универе компилится, но при запуске пишет:
Код
./gltest: error while loading shared libraries: libopenglut.so.1: cannot open shared object file: No such file or directory


Где-то было написано что надо прописать LIBRARY_PATH, пробовал
Код
LIBRARY_PATH="./libs" ./gltest
LIBRARY_PATH=./libs: Command not found.

LD_RUN_PATH, LD_LIBRARY_PATH выдаёт тоже самое

Как ему обяснить что libopenglut.so.1 находится в ./libs?

ЗЫ
Компилю так:
Код

g++  -march=i686 -g -pipe -Wall -W -pedantic -c main.cc -o main.o
g++  -o gltest -Llibs -lopenglut main.o

Автор: GrayCardinal 9.9.2006, 19:10
Это только в 
/etc/ld.so.conf
прописывать. 
Еще можно со статическим libopenglut собрать. Т.е.
g++  -o gltest libs/libopenglut.a main.o
Статический вариант должен быть в установочке "рядом" с динамическим... Если такового нет - собрать ручками libopenglut...

Автор: nickless 9.9.2006, 20:35
Спасибо за участие, статически не вышло, но зато получилось собрать динамически smile 
Код
g++  -Wl,--rpath -Wl,$HOME/openglut/lib  -o gltest -L$HOME/openglut/lib -lopenglut main.o

Как говорится век живи, век RTFM smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)