【问题标题】:Ubuntu undefined reference errorUbuntu未定义参考错误
【发布时间】:2016-07-14 13:43:10
【问题描述】:

我正在尝试编译一个用 C++ 编写的程序。我收到此消息错误:

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 降级到旧版本吗?

【问题讨论】:

  • 尝试将-std=c++11 标志添加到 gcc。
  • 这个函数从何而来?它的库和路径是否包含在您的链接库列表中?
  • @MattSchuchard:我正在使用这样的配置命令:./configure --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32 ”。如何在此命令中添加 -std 标志?
  • @Ternvein:这是其他文件中的函数,而不是库函数。

标签: ubuntu gcc gcc4 gcc5


【解决方案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"

【讨论】:

    猜你喜欢
    • 2019-10-25
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2021-07-15
    • 2015-09-29
    相关资源
    最近更新 更多