/usr/bin/ld: /usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.4.2.0: undefined reference to `png_set_interlace_handling@PNG16_0'
时间: 2023-07-23 20:30:54 浏览: 110
这个错误通常是由于编译链接时缺少 libpng 库导致的。你需要在编译链接时加入 libpng 库。如果你使用的是 CMake,可以在 CMakeLists.txt 中添加以下行:
```
find_package(PNG REQUIRED)
target_link_libraries(your_executable ${PNG_LIBRARIES})
```
如果你手动编译链接,可以使用以下命令:
```
gcc your_source_file.c -lpng -o your_executable
```
其中 -lpng 表示链接 libpng 库。
相关问题
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference
这个错误通常表示链接器无法找到对应的符号引用。在这种情况下,出现 undefined reference 错误可能是因为链接器无法找到 libopencv_highgui.so 中定义的某个符号。
解决这个问题的一种方法是确保你正确地链接了 OpenCV 库。请确认你已经正确包含了 `-lopencv_highgui` 链接选项,并且确保你的 OpenCV 库已正确安装并位于正确的路径中。
如果你确认了以上步骤,但仍然遇到问题,可能是因为缺少其他依赖项。在链接时,除了 `-lopencv_highgui` 之外,你还需要确保链接了其他所需的 OpenCV 库(例如 `-lopencv_core`、`-lopencv_imgproc` 等)。请根据你的需求和使用的 OpenCV 功能添加适当的链接选项。
如果问题仍然存在,请提供更多详细信息,例如完整的错误日志和编译命令,以便我能够更具体地帮助你解决问题。
/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/10/../../../aarch64-linux-gnu/libmali.so: .dynsym local symbol at index 3 (>= sh_info of 3) /usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/10/../../../aarch64-linux-gnu/libmali.so: .dynsym local symbol at index 4 (>= sh_info of 3)
这个错误通常是由于链接器无法正确处理某些本地符号导致的。在您的情况下,似乎是链接器无法正确处理 libmali.so 库中的某些本地符号。
尝试使用 `-Bsymbolic` 选项重新链接您的应用程序或库,这个选项会告诉链接器在链接时尽可能使用本地符号,而不是全局符号。您可以在 CMake 中使用以下方式来添加这个选项:
```cmake
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic")
```
如果这个选项不能解决问题,您可以尝试升级您的 libmali.so 库或相关的依赖项,以确保它们都是最新的版本,并且与您的系统和其他库兼容。
此外,还需要确保您的编译器和链接器都是最新的版本,并且与您的系统和其他库兼容。您可以尝试升级编译器和链接器,以解决任何版本不兼容的问题。
如果上述方法均无法解决问题,您可以尝试使用 `--exclude-libs` 选项来排除链接器无法处理的库。例如,如果您想排除 libmali.so 库,您可以在链接时使用以下选项:
```
-Wl,--exclude-libs,/usr/lib/gcc/aarch64-linux-gnu/10/../../../aarch64-linux-gnu/libmali.so
```
请注意,在进行任何更改之前,请备份您的系统和数据,以防止意外数据丢失或损坏。