2016-07-14 128 views
0

我試圖編譯一個用C++編寫的程序。我得到這個消息的錯誤:Ubuntu未定義的引用錯誤

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

我搜索,發現這個帖子:Undefined reference to process(std::__cxx11::basic_string ...) when compiling affdex linux sample applications

我以爲發生了這個錯誤,因爲我用gcc版本5.於是,我試着將它降級到4.8和編譯用gcc-4.8編程。但我仍然有這個錯誤,這是輸出:

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> >&)' 

我不知道爲什麼,我應該降級到舊版本的gcc?

+0

嘗試將'-std = C++ 11'標誌設置爲gcc。 –

+0

這個函數來自哪裏?它是包含在鏈接庫列表中的庫和路徑嗎? – Ternvein

+0

@MattSchuchard:我正在使用如下配置命令:./configure --host = i686-linux-gnu「CFLAGS = -m32」「CXXFLAGS = -m32」「LDFLAGS = -m32」。如何爲此命令添加-std標誌? – PhuongLM

回答

1

我解決了我的問題,最終編譯成功了該程序。調整我的配置爲:

./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「