2016-07-14 2 views
0

Je suis en train de compiler un programme écrit en C++. J'ai eu cette erreur de message:Ubuntu erreur de référence indéfinie

undefined reference to `escapeXMLChars(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' 

Je l'ai cherché et trouvé ce post: Undefined reference to process(std::__cxx11::basic_string ...) when compiling affdex linux sample applications

Je supposais cette erreur est survenue parce que j'utilisé la version GCC 5. J'ai donc essayé de rétrograder à 4,8 et compila les programme avec gcc-4.8. Mais j'ai toujours eu cette erreur, c'est la sortie:

g++-4.8 -m32 -Wall -o boomerang driver.o codegen/chllcode.o codegen/syntax.o util/util.o db/basicblock.o db/proc.o db/sslscanner.o db/cfg.o db/prog.o db/table.o db/statement.o db/register.o db/sslparser.o db/exp.o db/rtl.o db/sslinst.o db/insnameelem.o db/signature.o db/managed.o c/ansi-c-parser.o c/ansi-c-scanner.o boomerang.o log.o db/visitor.o db/dataflow.o db/xmlprogparser.o frontend/frontend.o frontend/njmcDecoder.o frontend/sparcdecoder.o frontend/pentiumdecoder.o frontend/sparcfrontend.o frontend/pentiumfrontend.o frontend/ppcdecoder.o frontend/ppcfrontend.o frontend/st20decoder.o frontend/st20frontend.o frontend/mipsdecoder.o frontend/mipsfrontend.o frontend/_8051frontend.o frontend/_8051decoder.o type/constraint.o type/type.o type/dfa.o loader/BinaryFileFactory.o transform/rdi.o transform/transformer.o transform/generic.o transform/transformation-parser.o transform/transformation-scanner.o db/AssHandler.o db/AssScanner.o -Wl,-rpath -Wl,"lib" -lfl -Llib -lgc -ldl -m32 -lBinaryFile -lexpat 
db/proc.o: In function `UserProc::printDecodedXML()': 
proc.cpp:(.text+0x4590): undefined reference to `escapeXMLChars(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' 

Je ne sais pas pourquoi, dois-je rétrograder à gcc ancienne version?

+0

Essayez l'indicateur' -std = C++ 11' dans gcc. –

+0

D'où vient cette fonction? Est-ce que sa bibliothèque et son chemin d'accès sont inclus dans votre liste de bibliothèques liées? – Ternvein

+0

@MattSchuchard: J'utilise une commande configure comme ceci: ./configure --host = i686-linux-gnu "CFLAGS = -m32" "CXXFLAGS = -m32" "LDFLAGS = -m32". Comment ajouter un drapeau -std à cette commande? – PhuongLM

Répondre

1

J'ai résolu mon problème et finalement compilé avec succès le programme. Ajustez ma configuration à:

./configure --host = i686-linux-gnu "CFLAGS = -m32" "CXXFLAGS = -m32" "LDFLAGS = -m32" "CC = gcc -std = C++ 11 -D_GLIBCXX_USE_CXX11_ABI = 0 "" CXX = g ++ -std = C++ 11 -D_GLIBCXX_USE_CXX11_ABI = 0 "