LINUX.ORG.RU

Automake/libtool & static libs


0

0

Sledushiy vopros : Nado sobrat libu kotoraya zavisit ot static libs (lib*.a) i shared versiy etih bibliotek netu (spasibo Oracle ) sobstvenno vse.V LDFLAGS dobavit -lliba ne pomogaet libtool vyrugivaetsya i ne prilinkovyvaet etu libu ... v manuale nichego ne nashel :(


Тебе надо собрать динамическую библиотеку, слинкованную со статической? Ха. Обломись. (кстати, при чем тут оракл? о какой библиотеке идет речь). Ну а причина облома простая и короткая - PIC. Это беда платформы вообще, а не libtool.

vsl
()

hren :) gcc -lclntsh lcore4 -lnslrtl3 -lcommon $(OBJS) -o $(TARGET) rabotaet ! s libtool net ! A oracle spasibo za to chto postavlyaet tolko .a versii bibliotek core4 nlsrtl3 i common

master
() автор топика
Ответ на: комментарий от master

А... Так ты собираешь не динамическую либу, а просто бинарник, так? Тогда все должно работать. Либу ты не слинкуешь с чем-то не-PIC-овым. Да, так какая версия оракла? В 8i - все библиотеки .so... Короче, напиши полностью строчку из Makefile, как ты либтул дергаешь.

vsl
()

Davai ya tebe prishlyu vse celikom :) vmeste s Makefile.am ?
VERSION = $(shell cat ../VERSION)  
lib_LTLIBRARIES = libocicpp.la  
libocicpp_la_SOURCES = \ Connection.cpp Cursor.cpp Lob.cpp OraDate.cpp \ OraDummy.cpp OraError.cpp OraLabel.cpp OraLob.cpp \ OraNumber.cpp OraRaw.cpp OraRefCur.cpp OraRowID.cpp \ OraString.cpp OraType.cpp RowID.cpp db.cpp ocicpp.cpp  
libocicpp_MAJOR = $(shell echo $(VERSION) | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/') libocicpp_AGE = $(shell echo $(VERSION) | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/') libocicpp_REVISION = $(shell echo $(VERSION) | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/') libocicpp_CURRENT = $(shell expr $(libocicpp_MAJOR) + $(libocicpp_AGE))  
libocicpp_la_LDFLAGS = -L$(ORACLE_LIBDIR) $(ORACLE_LIBS) -version-info $(libocicpp_CURRENT):$(libocicpp_REVISION):$(libocicpp_AGE) include_HEADERS = \ Connection.h Cursor.h Lob.h OraDate.h \ OraDummy.h OraError.h OraLabel.h \ OraLob.h OraNumber.h OraRaw.h OraRefCur.h \ OraRowID.h OraString.h OraType.h RowID.h \ db.h ocicpp.h  
DISTCLEANFILES = *~ \#*\#  
MAINTAINERCLEANFILES = Makefile.in
vot makefile.am ... koroche sobirayu libu ona hochet slinkovatsya s tremya .a libami 
(Oracle 8.0 pro 8i ya ne rugalsya s nim poryadok) 

/bin/sh ../libtool --mode=link c++  -I/usr/local/oracle/app/oracle/product/8.0.5/rdbms/demo -I/usr/local/oracle/app/oracle/product/8.0.5/rdbms/public -I/usr/local/oracle/app/oracle/product/8.0.5/plsql/public -I/usr/local/oracle/app/oracle/product/8.0.5/network/public  -o libocicpp.la -rpath /usr/local/lib -L/usr/local/oracle/app/oracle/product/8.0.5/lib -lclntsh -lcommon -lcore4 -lnlsrtl3 -version-info 4:0:4 Connection.lo
Cursor.lo Lob.lo OraDate.lo OraDummy.lo OraError.lo OraLabel.lo OraLob.lo OraNumber.lo OraRaw.lo OraRefCur.lo OraRowID.lo OraString.lo OraType.lo RowID.lo db.lo ocicpp.lo
potom silno rugaaaetsya i poluchaem :
gcc -shared  Connection.lo Cursor.lo Lob.lo OraDate.lo OraDummy.lo OraError.lo OraLabel.lo OraLob.lo OraNumber.lo OraRaw.lo OraRefCur.lo OraRowID.lo OraString.lo OraType.lo RowID.lo db.lo ocicpp.lo  -L/usr/local/oracle/app/oracle/product/8.0.5/lib -lclntsh -lc  -Wl,-soname -Wl,libocicpp.so.0 -o .libs/libocicpp.so.0.4.0 
I netu tam uzhe staticheskih lib! 
vot takaya petrushka
a esli kompilyat tak :
gcc -shared  Connection.lo Cursor.lo Lob.lo OraDate.lo OraDummy.lo OraError.lo OraLabel.lo OraLob.lo OraNumber.lo OraRaw.lo OraRefCur.lo OraRowID.lo OraString.lo OraType.lo RowID.lo db.lo ocicpp.lo  -L/usr/local/oracle/app/oracle/product/8.0.5/lib -lclntsh -lcore4 -lcommon -lnlsrtl3 -lc  -Wl,-soname -Wl,libocicpp.so.0 -o .libs/libocicpp.so.0.4.0 
to vse kompilitsya i rabotaet ...

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