Je suis en train de faire une montée de version d'une API utilisée par un programme C++ sous Solaris 8 et j'ai des erreurs de compilation dues à la nouvelle version de l'API m'ayant été fournie.
J’utilisais les bibliothèques xercesc et Xalan dans mes sources C++, et donc avait la libraire associées. La nouvelle version de la l’API que l’on ma fourni les contiennent aussi maintenant. Je ne sais pas si cela et le problème mais si vous pouviez m’aider.
Pour info, je suis sur Solaris 8 en 32 bit. Mon compilateur en GCC 3.4.6.
la librairie de l'API est libsw_api.so.
Mon make file se compose ainsi :
Launcher: $(OBJ_DIR)/Launcher.o $(OBJ_DIR)/Log.o $(OBJ_DIR)/ConfigFile.o $(OBJ_DIR)/Session.o $(OBJ_DIR)/SW_Helper.o $(OBJ_DIR)/Deal.o $(OBJ_DIR)/QueryDeals.o $(OBJ_DIR)/QueryDealsParser.o $(OBJ_DIR)/ExportDeal.o
g++ -z nodefs -Wall -I${LIB_DIR} -pg -Wall -D_REENTRANT -ansi -pedantic -o Launcher $(OBJ_DIR)/Launcher.o $(OBJ_DIR)/Log.o $(OBJ_DIR)/ConfigFile.o $(OBJ_DIR)/Session.o $(OBJ_DIR)/SW_Helper.o $(OBJ_DIR)/Deal.o $(OBJ_DIR)/QueryDeals.o $(OBJ_DIR)/QueryDealsParser.o $(OBJ_DIR)/ExportDeal.o -L$(LIB_DIR) -lsw_api -lstdc++ -lnsl -lsocket -lpthread -lc -lposix4 -laio -lm -ldl
$(OBJ_DIR)/Launcher.o: $(C_DIR)/Launcher.cpp
gcc -Wall -I${LIB_DIR} -pg -Wall -D_REENTRANT -ansi -pedantic -o $(OBJ_DIR)/Launcher.o -c $(C_DIR)/Launcher.cpp
$(OBJ_DIR)/Log.o: $(C_DIR)/Log.cpp $(H_DIR)/Log.h
gcc -Wall -I${LIB_DIR} -pg -Wall -D_REENTRANT -ansi -pedantic -o $(OBJ_DIR)/Log.o -c $(C_DIR)/Log.cpp -W -Wall -ansi -pedantic
$(OBJ_DIR)/ConfigFile.o: $(C_DIR)/ConfigFile.cpp $(H_DIR)/ConfigFile.h
gcc -Wall -I${LIB_DIR} -pg -Wall -D_REENTRANT -ansi -pedantic -o $(OBJ_DIR)/ConfigFile.o -c $(C_DIR)/ConfigFile.cpp -W -Wall -ansi -pedantic
$(OBJ_DIR)/QueryDeals.o: $(C_DIR)/QueryDeals.cpp $(H_DIR)/QueryDeals.h
gcc -Wall -I${LIB_DIR} -pg -Wall -D_REENTRANT -ansi -pedantic -o $(OBJ_DIR)/QueryDeals.o -c $(C_DIR)/QueryDeals.cpp -W -Wall -ansi -pedantic
$(OBJ_DIR)/Session.o: $(C_DIR)/Session.cpp $(H_DIR)/Session.h $(H_DIR)/sw_api.h
gcc -Wall -I${LIB_DIR} -pg -Wall -D_REENTRANT -ansi -pedantic -o $(OBJ_DIR)/Session.o -c $(C_DIR)/Session.cpp -W -Wall -ansi -pedantic
$(OBJ_DIR)/ExportDeal.o: $(C_DIR)/ExportDeal.cpp $(H_DIR)/ExportDeal.h
gcc -Wall -I${LIB_DIR} -pg -Wall -D_REENTRANT -ansi -pedantic -o $(OBJ_DIR)/ExportDeal.o -c $(C_DIR)/ExportDeal.cpp -W -Wall -ansi -pedantic
$(OBJ_DIR)/QueryDealsParser.o: $(C_DIR)/QueryDealsParser.cpp $(H_DIR)/QueryDealsParser.h
gcc -Wall -I${LIB_DIR} -pg -Wall -D_REENTRANT -ansi -pedantic -o $(OBJ_DIR)/QueryDealsParser.o -c $(C_DIR)/QueryDealsParser.cpp -W -Wall -ansi -pedantic
$(OBJ_DIR)/Deal.o: $(C_DIR)/Deal.cpp $(H_DIR)/Deal.h $(H_DIR)/sw_api.h
gcc -Wall -I${LIB_DIR} -pg -Wall -D_REENTRANT -ansi -pedantic -o $(OBJ_DIR)/Deal.o -c $(C_DIR)/Deal.cpp -W -Wall -ansi -pedantic
$(OBJ_DIR)/SW_Helper.o: $(C_DIR)/SW_Helper.cpp $(H_DIR)/SW_Helper.h $(H_DIR)/sw_api.h
gcc -Wall -I${LIB_DIR} -pg -Wall -D_REENTRANT -ansi -pedantic -o $(OBJ_DIR)/SW_Helper.o -c $(C_DIR)/SW_Helper.cpp -W -Wall -ansi -pedantic
A la compilation j'ai ces erreurs :
g++ -z nodefs -Wall -I.. -pg -Wall -D_REENTRANT -ansi -pedantic -o Launcher ../obj/Launcher.o ../obj/Log.o ../obj/ConfigFile.o ../obj/Session.o ../obj/SW_Helper.o ../obj/Deal.o ../obj/QueryDeals.o ../obj/QueryDealsParser.o ../obj/ExportDeal.o -L.. -lsw_api -lstdc++ -lnsl -lsocket -lpthread -lc -lposix4 -laio -lm -ldl
warning: Text relocation remains referenced
against symbol offset in file
xercesc_2_7:TDEntityDecl::serialize(xercesc_2_7::XSerializeEngine&)0x14 ../obj/QueryDeals.o
xercesc_2_7:TDEntityDecl::getProtoType() const 0x18 ../obj/QueryDeals.o
typeinfo for xercesc_2_7::SAXParseException0x54 ../obj/QueryDeals.o
typeinfo for xercesc_2_7::SAXParseException0x58 ../obj/QueryDeals.o
typeinfo for xercesc_2_7::SAXParseException0x54 ../obj/QueryDealsParser.o
typeinfo for xercesc_2_7::SAXParseException0x58 ../obj/QueryDealsParser.o
xercesc_2_7::SAXParser::SAXParser(xercesc_2_7::XMLValidator*, xercesc_2_7::MemoryManager*, xercesc_2_7::XMLGrammarPool*)0x9ac ../obj/QueryDeals.o
xercesc_2_7::MemBufInputSource::~MemBufInputSource()0x11a0 ../obj/QueryDeals.o
xercesc_2_7::MemBufInputSource::~MemBufInputSource()0x11c0 ../obj/QueryDeals.o
xercesc_2_7::XMLString::transcode(unsigned short const*)0xd30 ../obj/QueryDeals.o
xercesc_2_7::XMLString::transcode(unsigned short const*)0xed4 ../obj/QueryDeals.o
xercesc_2_7::XMLString::transcode(unsigned short const*)0x834 ../obj/QueryDealsParser.o
xercesc_2_7::XMLString::transcode(unsigned short const*)0x98c ../obj/QueryDealsParser.o
xercesc_2_7::XMLString::transcode(unsigned short const*)0x9c0 ../obj/QueryDealsParser.o
xercesc_2_7::XMLEntityDecl::~XMLEntityDecl()0x2c ../obj/QueryDeals.o
xercesc_2_7::XMLEntityDecl::~XMLEntityDecl()0x2c ../obj/QueryDeals.o
xercesc_2_7::XMLString::release(char**)0xe20 ../obj/QueryDeals.o
xercesc_2_7::XMLString::release(char**)0xfc4 ../obj/QueryDeals.o
xercesc_2_7::XMLString::release(char**)0x910 ../obj/QueryDealsParser.o
xercesc_2_7::XMLString::release(char**)0xc0c ../obj/QueryDealsParser.o
xercesc_2_7::XMLString::release(char**)0xc20 ../obj/QueryDealsParser.o
xercesc_2_7::SAXParseException::SAXParseException(xercesc_2_7::SAXParseException const&)0x48 ../obj/QueryDeals.o
xercesc_2_7::SAXParseException::SAXParseException(xercesc_2_7::SAXParseException const&)0x48 ../obj/QueryDealsParser.o
etc..
A l'éxecution du binaire le message d'erreur est :
ld.so.1: DealSwap6.4: fatal: relocation error: file DealSwap6.4: symbol _ZN11xercesc_2_79SAXParserC1EPNS_12XMLValidatorEPNS_13MemoryManagerEPNS_14XMLGrammarPoolE: referenced symbol not found
Et la trace GDB est :
Warning: Lowest section in /NXGDEVTT01/apps/dealsink_compil/lib/libsw_api.so is at 00000094
BFD: /NXGDEVTT01/apps/dealsink_compil/lib/libsw_api.so symbol number 31 references nonexistent SHT_SYMTAB_SHNDX section
Error while reading shared library symbols:
Can't read symbols from /NXGDEVTT01/apps/dealsink_compil/lib/libsw_api.so: File in wrong format
Merci de votre aide.
Sky
Partager