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