..\OBJ\test.axf: Error: L6200E: Symbol Motor_Init multiply defined (by motor.o and main.o).
时间: 2023-06-07 19:11:46 浏览: 269
这是一个编译错误,意思是 Motor_Init 符号被 motor.o 和 main.o 两个文件重复定义了。需要解决这个冲突,可以将 Motor_Init 函数定义放到一个单独的源文件中,然后在 main.c 和 motor.c 文件中分别包含这个文件即可。另外,还可以使用 static 关键字来限制函数的作用域,确保不会被其他文件引用。
相关问题
..\OBJ\05_class_one.axf: Error: L6200E: Symbol kp multiply defined (by pid.o and main.o). ..\OBJ\05_class_one.axf: Error: L6200E: Symbol ki multiply defined (by pid.o and main.o). ..\OBJ\05_class_one.axf: Error: L6200E: Symbol kd multiply defined (by pid.o and main.o). ..\OBJ\05_class_one.axf: Error: L6200E: Symbol error multiply defined (by pid.o and main.o). ..\OBJ\05_class_one.axf: Error: L6200E: Symbol last_error multiply defined (by pid.o and main.o). ..\OBJ\05_class_one.axf: Error: L6200E: Symbol add_error multiply defined (by pid.o and main.o). ..\OBJ\05_class_one.axf: Error: L6200E: Symbol dy_error multiply defined (by pid.o and main.o). ..\OBJ\05_class_one.axf: Error: L6200E: Symbol pid_out multiply defined (by pid.o and main.o). Not enough information to list image symbols. Not enough information to list load addresses in the image map.
这些错误是由于在 'pid.o' 和 'main.o' 文件中同时定义了 'kp'、'ki'、'kd'、'error'、'last_error'、'add_error'、'dy_error' 和 'pid_out' 这些符号导致的。这种重复定义会导致链接时的冲突。要解决这个问题,你需要确保这些符号只在一个文件中定义。你可以检查一下这些文件,看看是否有重复定义的地方,并将其中一处定义删除或修改。
..\OBJ\Template.axf: Error: L6200E: Symbol __ARM_use_no_argv multiply defined (by test.o and main.o).
这个错误是由于代码中定义的某些符号在多个目标文件中重复定义导致的。在您的情况下,__ARM_use_no_argv 符号被 test.o 和 main.o 两个目标文件定义了多次,因此链接器无法决定使用哪个定义。
要解决这个问题,您需要查找并删除重复定义的符号。您可以通过在链接器命令行中添加 `-Wl,--print-map` 选项来生成一个符号映射文件,该文件列出了所有符号及其定义的目标文件。使用此文件可以方便地检查哪个文件中定义了重复的符号。另外,您还可以尝试使用 `extern` 关键字来声明符号,以便在多个文件中共享它。
最后,确保您的代码没有重复定义符号和函数,以避免此类错误的发生。
阅读全文