.\Objects\Project.axf: Error: L6200E: Symbol main multiply defined (by oled.o and main.o).
时间: 2023-10-22 20:34:08 浏览: 481
这个错误提示是因为 `main` 函数被 `oled.o` 和 `main.o` 两个文件同时定义了,导致链接器无法确定应该使用哪一个 `main`。
解决这个问题的方法是将 `oled.o` 和 `main.o` 合并成一个文件,或者将 `oled.o` 中的 `main` 函数重命名为避免冲突。
你可以先检查一下这两个文件中是否都有 `main` 函数,如果都有的话,可以将 `oled.o` 中的 `main` 函数重命名,比如改成 `oled_main`,然后再重新编译链接即可。
相关问题
.\Objects\Project.axf: Error: L6200E: Symbol main multiply defined (by oled.o and main.o).怎么解决
这个错误是由于 `main` 函数在 `oled.o` 和 `main.o` 两个文件中被定义了,导致链接时出现冲突。解决方法是将 `main` 函数定义放在一个文件中,并将其他文件中的 `main` 函数定义删除或注释掉。
如果你需要在多个文件中使用 `main` 函数中的变量或函数,可以将它们定义为全局变量或函数,并在头文件中声明。然后在需要使用它们的文件中包含头文件即可。
如果你只是想编译 `oled.o` 和 `main.o` 两个文件,可以使用以下命令进行编译链接:
```
arm-none-eabi-gcc -c oled.c -o oled.o
arm-none-eabi-gcc -c main.c -o main.o
arm-none-eabi-gcc -o main.elf oled.o main.o
```
这会生成可执行文件 `main.elf`。
..\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' 这些符号导致的。这种重复定义会导致链接时的冲突。要解决这个问题,你需要确保这些符号只在一个文件中定义。你可以检查一下这些文件,看看是否有重复定义的地方,并将其中一处定义删除或修改。
阅读全文