/usr/bin/ld: /usr/local/lib/libprotobuf.so: undefined reference to symbol 'inflateEnd' /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libz.so: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status t3/CMakeFiles/t3_node.dir/build.make:318: recipe for target '/smartview/devel/lib/t3/t3_node' failed make[2]: *** [/smartview/devel/lib/t3/t3_node] Error 1 CMakeFiles/Makefile2:3555: recipe for target 't3/CMakeFiles/t3_node.dir/all' failed make[1]: *** [t3/CMakeFiles/t3_node.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [100%] Built target smartview_node Makefile:145: recipe for target 'all' failed make: *** [all] Error 2 Invoking "make -j20 -l20" failed
时间: 2023-08-07 11:07:47 浏览: 256
根据错误信息,可以看出是在链接时发生了错误。错误信息提示 `/usr/local/lib/libprotobuf.so` 引用了 `inflateEnd` 符号,但是该符号未在链接时找到。同时,还提示 `/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libz.so` 缺失。
综合来看,可能是在链接时缺失了 zlib 库。可以尝试在 CMakeLists.txt 中添加以下语句:
```
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lz")
```
该语句的作用是将链接时需要的 zlib 库添加到链接选项中。您可以将其添加到 `project` 和 `find_package` 语句之间。
相关问题
/usr/bin/ld: /lib/libgrpc.so.9: undefined reference to `BIO_pending'
这个错误是由于在链接过程中找不到`BIO_pending`函数的定义而引起的。`BIO_pending`函数是OpenSSL库中的一个函数,用于获取BIO对象中待处理的数据大小。
要解决这个错误,你需要确保在链接时正确地包含了OpenSSL库。可以通过在编译命令中添加`-lssl -lcrypto`选项来链接OpenSSL库。例如:
```
gcc your_file.c -o your_program -lssl -lcrypto
```
另外,还需要确保OpenSSL库已经正确安装在系统中,并且库文件路径正确配置。
/usr/bin/ld: /usr/local/lib/libopencv_imgcodecs.so: undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'
这是一个链接错误,意味着编译器无法在链接时找到名为 `TIFFReadRGBAStrip@LIBTIFF_4.0` 的符号。可能的原因是您的项目中使用了 libtiff 库的某些函数,但是编译器无法在链接时找到该库或者该库的某个版本不兼容。
您可以尝试以下几种方法来解决这个问题:
1. 确认您已经安装了 libtiff 库,并且该库的路径已经正确添加到了链接器的搜索路径中。
2. 如果您已经安装了 libtiff 库,但是链接器仍然找不到该库,请检查该库的版本是否与您的项目兼容。您可以尝试升级或降级 libtiff 库的版本。
3. 如果您没有使用 libtiff 库的相关函数,可以尝试在编译选项中禁用该库的链接。例如,在 gcc 中,可以使用 `-Wl,--exclude-libs,libtiff.a` 选项来排除链接 libtiff 库。
希望以上方法可以帮助您解决问题。