vscorpion Опубликовано 17 января, 2011 Жалоба Опубликовано 17 января, 2011 Здравствуйте. Пишу проект с использованием библиотек типа 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 Что не так делаю. Подскажите, пожалуйста. Заранее спасибо. Отправлять читать книги не, отправляйте - читал, все делаю как там написано. Цитата
gogi Опубликовано 18 января, 2011 Жалоба Опубликовано 18 января, 2011 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 Именно такое имя вы задаете в опциях компановщика. При выполнени напрямую, загрузчик, видимо, находит это имя в текущем каталоге. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.