Atmel Studio:未定义对"_read"的引用
Atmel Studio: undefined reference to `_read'
我开始使用Atmel Studio收到以下链接器错误:
c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-mlibc.a(lib_a-readr.o):
In function `_read_r':
C:UsersAdministratorDocumentsmyprojDebugreadr.c(1,1): error: undefined reference to `_read'
这是在我向项目中添加了virtual
方法后发生的。发生了什么?
在我的情况下,此问题与项目配置的链接器设置有关。
通过设置链接器设置"附加规格"to'使用Syscall Stubs(-specs = nosys.specs(&quort;
这些设置位于
下Project Properties -> Toolchain -> ARM/GNU Linker -> General -> Additional Specs
最初从此网站提取的答案。
正在发生的事情是,内置的__cxa_pure_virtual
默认值通过printf
使用_read
和_write
。要修复,明确定义该处理程序做其他事情。
extern "C" void __cxa_pure_virtual();
extern "C" void __cxa_pure_virtual() {
// Add custom handler here
while(1);
}
在我的情况下,我将其追溯到ASF定义servert((的问题时,当'ndebug''在项目编译 link符号中未定义时无效。
特别是
- 项目属性 ->工具链 -> arm gnu c compiler->符号:添加ndebug作为-d'定义符号'。
- 项目属性 ->工具链 -> ARM GNU预处理组件 ->符号:添加ndebug作为-d'定义符号'。
相关文章:
- 将对象数组的引用传递给函数
- 什么时候在C++中返回常量引用是个好主意
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 何时在引用或唯一指针上使用移动语义
- 如何在c++中使用引用实现类似python的行为
- 编译C++时未定义的引用
- Ctypes wstring通过引用传递
- c++r值引用应用于函数指针
- 理解c++中的引用
- C++取消引用指针.为什么会发生变化
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 强制转换为引用类型
- 引用一个已擦除类型(void*)的指针
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 具有默认值的引用获取函数
- 如何使用基类指针引用派生类成员
- std::wfstream是否可以通过引用传递,以及我是否能够正确使用write()和read()
- 在C++中:常量引用意味着"read-only view of"还是需要被引用对象的不可变性?