Перейти к содержанию

Рекомендуемые сообщения

Здравствуйте.

Пишу проект с использованием библиотек типа shared

MAKEFILE

TAXIINCLUDE=include

TAXILIB=lib

PROPERTY=property.conf

CXX := g++ -DIBPP_LINUX -Wl,-rpath,/usr

CXXFLAGS := -I./include/boost -I/usr/local/cppconn -I/usr/include/ibpp

LDFLAGS := -L./boost/lib -L/usr/lib -lmysqlcppconn -lboost_date_time -lboost_program_options-mt

PROGRAM_NAME := taxi

OBJECT_FILES := $(TAXILIB)/libtaxifinance.so $(TAXILIB)/libtaxifuncs.so $(TAXILIB)/libtaxiconf.so $(TAXILIB)/libtaxistats.so $(TAXILIB)/libtaxipenalty.so $(PROGRAM_NAME).o

HEADS := $(TAXIINCLUDE)/libtaxiconf.h $(TAXIINCLUDE)/libtaxifinance.h $(TAXIINCLUDE)/libtaxifuncs.h $(TAXIINCLUDE)/libtaxistats.h $(TAXIINCLUDE)/libtaxipenalty.h

HEADS := $(TAXIINCLUDE)/

LIBS := -ltaxifinance -ltaxifuncs -ltaxiconf -ltaxistats -ltaxipenalty -libpp

$(PROGRAM_NAME): $(OBJECT_FILES)

$(CXX) $(CXXFLAGS) -o $@ $^ -L$(TAXILIB) $(LIBS)

#taxi.o: taxi.cpp $(TAXIINCLUDE)/libtaxi.h $(TAXIINCLUDE)/libtaxifinance.h $(TAXIINCLUDE)/libtaxifunc.h $(TAXIINCLUDE)/libtaxistats.h $(TAXIINCLUDE)/libtaxipenalty.h

# $(CXX) $(CXXFLAGS) -c taxi.cpp

taxi.o: taxi.cpp $(HEADS)

$(CXX) $(CXXFLAGS) -c taxi.cpp

$(TAXILIB)/libtaxiconf.so: $(TAXILIB)/libtaxiconf.cpp $(TAXIINCLUDE)/libtaxiconf.h

$(CXX) -fPIC $(CXXFLAGS) $(LDFLAGS) -c $(TAXILIB)/libtaxiconf.cpp -o $(TAXILIB)/libtaxiconf.o -I $(TAXIINCLUDE)/

$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-soname,$(TAXILIB)/libtaxiconf.so -o $(TAXILIB)/libtaxiconf.so $(TAXILIB)/libtaxiconf.o

$(TAXILIB)/libtaxifinance.so: $(TAXILIB)/libtaxifinance.cpp $(TAXIINCLUDE)/libtaxifinance.h

$(CXX) -fPIC $(CXXFLAGS) $(LDFLAGS) -c $(TAXILIB)/libtaxifinance.cpp -o $(TAXILIB)/libtaxifinance.o -I $(TAXIINCLUDE)/

$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-soname,$(TAXILIB)/libtaxifinance.so -o $(TAXILIB)/libtaxifinance.so $(TAXILIB)/libtaxifinance.o

$(TAXILIB)/libtaxifuncs.so: $(TAXILIB)/libtaxifuncs.cpp $(TAXIINCLUDE)/libtaxifuncs.h

$(CXX) -fPIC $(CXXFLAGS) $(LDFLAGS) -c $(TAXILIB)/libtaxifuncs.cpp -o $(TAXILIB)/libtaxifuncs.o -I $(TAXIINCLUDE)/

$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-soname,$(TAXILIB)/libtaxifuncs.so -o $(TAXILIB)/libtaxifuncs.so $(TAXILIB)/libtaxifuncs.o

$(TAXILIB)/libtaxistats.so: $(TAXILIB)/libtaxistats.cpp $(TAXIINCLUDE)/libtaxistats.h

$(CXX) -fPIC $(CXXFLAGS) $(LDFLAGS) -c $(TAXILIB)/libtaxistats.cpp -o $(TAXILIB)/libtaxistats.o -I $(TAXIINCLUDE)/

$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-soname,$(TAXILIB)/libtaxistats.so -o $(TAXILIB)/libtaxistats.so $(TAXILIB)/libtaxistats.o

$(TAXILIB)/libtaxipenalty.so: $(TAXILIB)/libtaxipenalty.cpp

$(CXX) -fPIC $(CXXFLAGS) $(LDFLAGS) -c $(TAXILIB)/libtaxipenalty.cpp -o $(TAXILIB)/libtaxipenalty.o -I $(TAXIINCLUDE)/

$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-soname,$(TAXILIB)/libtaxipenalty.so -o $(TAXILIB)/libtaxipenalty.so $(TAXILIB)/libtaxipenalty.o

install:

cp -fR ./taxi /usr/bin/

cp -fR $(TAXIINCLUDE)/*.h /usr/include/

cp -fR $(TAXILIB)/*.so /usr/lib/

config:

mkdir -p /etc/taxi

cp -i $(PROPERTY) /etc/taxi/

clean:

rm -f *.so $(TAXILIB)/*.so

rm -fR *.o $(TAXILIB)/*.o

rm -fR *.o *.o

rm -f *.out

rm -f $(PROGRAM_NAME)

После выполнения компиляции делаю make install и ldconfig

выдается ошибка при выполнении ldconfig

ldconfig: Невозможно создать ссылку с /usr/lib/lib/libtaxifinance.so на libtaxifinance.so

ldconfig: Невозможно создать ссылку с /usr/lib/lib/libtaxipenalty.so на libtaxipenalty.so

ldconfig: Невозможно создать ссылку с /usr/lib/lib/libtaxistats.so на libtaxistats.so

ldconfig: Невозможно создать ссылку с /usr/lib/lib/libtaxiconf.so на libtaxiconf.so

ldconfig: Невозможно создать ссылку с /usr/lib/lib/libtaxifuncs.so на libtaxifuncs.so

при вызове с командной строки taxi - все работает...

но если же я вызываю через crontab мне приходит письмо с ошибкой

taxi: error while loading shared libraries: lib/libtaxifinance.so: cannot open shared object file: No such file or directory

Что не так делаю.

Подскажите, пожалуйста. Заранее спасибо.

Отправлять читать книги не, отправляйте - читал, все делаю как там написано.

Ссылка на комментарий
Поделиться на другие сайты

vscorpion писал(а) Mon, 17 January 2011 13:29

TAXILIB=lib

$(TAXILIB)/libtaxiconf.so: $(TAXILIB)/libtaxiconf.cpp $(TAXIINCLUDE)/libtaxiconf.h

$(CXX) -fPIC $(CXXFLAGS) $(LDFLAGS) -c $(TAXILIB)/libtaxiconf.cpp -o $(TAXILIB)/libtaxiconf.o -I $(TAXIINCLUDE)/

$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-soname,$(TAXILIB)/libtaxiconf.so -o $(TAXILIB)/libtaxiconf.so $(TAXILIB)/libtaxiconf.o

ldconfig: Невозможно создать ссылку с /usr/lib/lib/libtaxifinance.so на libtaxifinance.so

taxi: error while loading shared libraries: lib/libtaxifinance.so: cannot open shared object file: No such file or directory

Что не так делаю.

Подскажите, пожалуйста. Заранее спасибо.

Отправлять читать книги не, отправляйте - читал, все делаю как там написано.

Если книги уже перечитаны, то осталось выполнить команду

ldd taxi

Тогда увидите, что у вас ищутся библиотеки с именем lib/libxxx.so

Именно такое имя вы задаете в опциях компановщика.

При выполнени напрямую, загрузчик, видимо, находит это имя в текущем каталоге.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...