cmake - 如何指定 gcc 使用“libdl.so.2”库使用 CMake 进行链接?
问题描述
交叉编译 mosquitto 库时出现此错误。
Linking C executable mosquitto
/usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: CMakeFiles/mosquitto.dir/security.c.obj: undefined reference to symbol 'dlopen@@GLIBC_2.4'
/usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: /lib/arm-linux-gnueabihf/libdl.so.2: error adding symbols: DSO missing from command line
我对 CMake 很陌生,我不知道如何指定使用这个库。我已经尝试过选项,但没有运气。
add_link_options(-ldl)
add_link_options(-dl)
这是我的手臂工具链
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(COMPILER_PREFIX arm-linux-gnueabihf-)
set(CMAKE_C_COMPILER ${COMPILER_PREFIX}gcc)
set(CMAKE_CXX_COMPILER ${COMPILER_PREFIX}g++)
set(CMAKE_AR ${COMPILER_PREFIX}ar)
set(CMAKE_RANLIB ${COMPILER_PREFIX}ranlib)
set(CMAKE_ASM_COMPILER ${COMPILER_PREFIX}gcc)
set(CMAKE_OBJCOPY ${COMPILER_PREFIX}objcopy)
set(CMAKE_OBJDUMP ${COMPILER_PREFIX}objdump)
set(CMAKE_SIZE ${COMPILER_PREFIX}size)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
请问,有人可以帮忙吗?
解决方案
推荐阅读
- java - Android:PDF从webview下载为空
- java - 从文本文件中删除完全匹配的字符串
- sql-server - 如何一次性检查我的所有 SQL Server 存储过程是否已加密?
- laravel - Laravel 搜索查询优化
- c - 如何将用户输入限制为仅数字?
- arduino - Arduino:(char)Serial.read() 返回为⸮(反问号)
- python - How to get an input after a with open?
- python - Python, Pandas, sql, read specific columns from a database with a for-loop
- html - Small gap between image and image border on chrome & edge desktop
- html - CSS for toggle collapse