/usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: ../../../lib/libPcslib.a(ModbusConnection.cpp.o): in function `esf::Connection::~Connection()': /home/zlgmcu/Desktop/monitor-s/src/Pcslib/Connection.hpp:33: undefined reference to `vtable for esf::Connection' /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: ../../../lib/libPcslib.a(ModbusConnection.cpp.o): in function `esf::Connection::Connection()': /home/zlgmcu/Desktop/monitor-s/src/Pcslib/Connection.hpp:30: undefined reference to `vtable for esf::Connection' /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: ../../../lib/libPcslib.a(ModbusConnection.cpp.o):(.data.rel.ro+0x8): undefined reference to `typeinfo for esf::Connection' collect2: error: ld returned 1 exit status make[2]: *** [src/main/CMakeFiles/start_main.dir/build.make:98:../bin/start_main] 错误 1 make[1]: *** [CMakeFiles/Makefile2:449:src/main/CMakeFiles/start_main.dir/all] 错误 2 make: *** [Makefile:84:all] 错误 2
时间: 2023-07-22 17:12:00 浏览: 141
这个错误是链接器(ld)在链接过程中找不到 `esf::Connection` 类的虚函数表(vtable)和类型信息(typeinfo)的定义。这通常发生在没有实现类的析构函数或构造函数的情况下。请确保在 `Connection.hpp` 文件中正确地定义了 `esf::Connection` 类的析构函数和构造函数,并且在相应的源文件中实现了这些函数。另外,也要确认是否正确地包含了相关的头文件和库文件。
相关问题
/usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lnl-3
您好!对于您提到的错误信息,出现这个错误通常是因为系统找不到名为"nl-3"的库文件。这可能是由于缺少相应的库文件或者库文件的路径没有正确配置所致。
解决方法可以尝试以下步骤:
1. 确保您已经安装了正确版本的"nl-3"库。您可以通过包管理器或者手动安装该库文件。
2. 检查库文件路径是否配置正确。您可以使用命令`ldconfig -p | grep nl-3`来查找系统中是否存在该库文件,如果没有找到,需要将库文件路径添加到系统的库搜索路径中。
3. 如果您已经安装了"nl-3"库,但是系统仍然找不到,可能需要手动指定库文件的路径。在编译或链接时,使用"-L"选项指定库文件的路径,例如:`-L/path/to/nl-3`。
4. 如果以上方法都无效,可能需要检查您的编译环境和依赖项是否正确配置。
希望以上信息能够帮助您解决问题!如果您有其他问题,请随时提问。
/usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: ../../../lib/liblog.so: undefined reference to `bts_log::SystemLog::shmCfgId'
这个错误是因为链接器在链接时找不到`bts_log::SystemLog::shmCfgId`符号。这个符号可能是在`liblog.so`库中定义的。
要解决这个问题,你需要确保`liblog.so`库已经正确地链接到你的项目中,并且可以找到`bts_log::SystemLog::shmCfgId`符号。
你可以尝试以下几个步骤来解决这个问题:
1. 确认`liblog.so`库已经正确地安装在你的系统中,并且可以被找到。你可以使用`ldconfig -p | grep liblog.so`命令来检查库是否已经安装,并且可以被系统找到。
2. 确认你的项目中已经正确地包含了`liblog.so`库。你可以在CMakeLists.txt文件中使用以下命令来链接库:
```
target_link_libraries(你的项目名 log)
```
这将链接`liblog.so`库到你的项目中。
3. 如果你的项目中包含多个库,可能存在库链接顺序的问题。你可以尝试修改库的链接顺序来解决这个问题。你可以在CMakeLists.txt文件中使用以下命令来指定库的链接顺序:
```
target_link_libraries(你的项目名 -Wl,--start-group 库名1 库名2 ... -Wl,--end-group)
```
这将强制链接器按照指定的顺序链接库。
希望这些方法能够帮助你解决这个问题。
阅读全文