首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >GCC ARM交叉编译,像未定义引用`__cxa_end_catch@CXXABI_1.3这样的错误表示什么?

GCC ARM交叉编译,像未定义引用`__cxa_end_catch@CXXABI_1.3这样的错误表示什么?
EN

Stack Overflow用户
提问于 2019-05-21 18:57:13
回答 1查看 1.4K关注 0票数 1

我使用面向FPGA SoC的英特尔嵌入式开发套件成功构建了英特尔Cyclone V SoC的测试应用程序。此应用程序链接到一些特定于目标系统的库。

由于C++附带的here已经很过时了,我需要更新的ARM特性,所以我想用我从ARM网站下载的arm-linux-gnueabihf-g++的最新版本来编译所有的东西。

用最近的GCC编译用原始工具链构建得很好的同一项目会导致许多这样的错误:

代码语言:javascript
复制
pathToNewGcc-ARM/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: intelFPGARootDir/18.1/hld/host/arm32/lib/libalteracl.so: undefined reference to `__cxa_end_catch@CXXABI_1.3'
pathToNewGcc-ARM/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: intelFPGARootDir/18.1/hld/host/arm32/lib/libalteracl.so: undefined reference to `std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream(std::string const&, std::_Ios_Openmode)@GLIBCXX_3.4'
pathToNewGcc-ARM/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: intelFPGARootDir/18.1/hld/host/arm32/lib/libalteracl.so: undefined reference to `std::cerr@GLIBCXX_3.4'
pathToNewGcc-ARM/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: intelFPGARootDir/18.1/hld/host/arm32/lib/libalteracl.so: undefined reference to `operator delete(void*)@GLIBCXX_3.4'

libalteracl.so是英特尔发行的目标系统特定库之一。显然,这里有些东西不匹配,但是我不确定确切的问题是什么。因此,我需要一些解释如何解释这个错误,以及可以做些什么来修复它们。

由于评论中出现了一些问题,这里有一些额外的信息

目标架构是一款双核ARM Cortex A9。我在上面链接的ARM网站上用硬浮点( ARM -linux-gnueabihf)加载了AArch32目标下列出的ARM。

构建是由CMake / CLion完成的。提取生成的编译器/链接器调用如下:

编译:

代码语言:javascript
复制
pathToNewGcc-ARM/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++  -DCL_HPP_MINIMUM_OPENCL_VERSION=110 -DCL_HPP_TARGET_OPENCL_VERSION=200 -DJUCE_APP_CONFIG_HEADER=\"myProjectDir/JuceLibraryCode/AppConfig.h\" -DOPEN_CL_INTEL_FPGA -D_DEBUG=1 -IsomeFrameworkDir/JUCE/modules -IintelFPGARootDir/18.1/hld/host/include20  -g   -std=gnu++11 -o CMakeFiles/HostApplication.dir/Source/Main.cpp.o -c myProjectDir/Source/Main.cpp

链接:

代码语言:javascript
复制
pathToNewGcc-ARM/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++  -g   -LintelFPGARootDir/18.1/hld/board/de10_standard/arm32/lib -LintelFPGARootDir/18.1/hld/host/arm32/lib -LintelFPGARootDir/18.1/hld/host/arm32/lib -Wl,--no-as-needed -lalteracl -lintel_soc32_mmd -lstdc++ -lelf CMakeFiles/HostApplication.dir/Source/Main.cpp.o CMakeFiles/HostApplication.dir/JuceLibraryCode/include_juce_core.cpp.o  -o HostApplication -lrt -ldl -lpthread

libalteracl.so应该是32位的库,因为整个目标架构是32位的

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56236800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档