You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile转CMake交叉编译时无法找到libOBD2.so共享链接库

问题原因

  • 头文件配置语法错误
    include_directories是全局生效的配置函数,不接受目标名、访问权限参数,你写的include_directories(${PROJECT_NAME} PRIVATE ${PATH1})会把iwtest、PRIVATE都当成头文件路径添加到编译参数,生成无效的-I配置,目标级的头文件配置应该用target_include_directories。
  • 链接路径变量引用错误
    CMake的变量引用语法是${变量名},你在target_link_options里用了Makefile语法的-L$(PATH3),导致PATH3变量没有被解析,链接器找不到指定的系统库路径。
  • 链接顺序和重复配置错误
    你已经通过add_library导入了libOBD2.so的完整路径,不需要再额外加-lOBD2参数;同时你把所有-l链接参数放在了目标文件前面,链接器处理-l参数时还未读取到目标文件的符号依赖,会直接跳过库加载,导致找不到符号。
  • 编译参数配置错误
    add_definitions用于添加预处理宏,不应该用来传递编译/链接参数,-s是链接阶段的strip参数,放在编译配置里无效。

修正后的CMakeLists.txt

cmake_minimum_required(VERSION 3.5)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR ARM)

# 开启fPIC
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# 配置编译选项
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0")
# 配置链接选项
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s")

project(iwtest)

set(PATH1 "/opt/fsl-imx-x11/5.4-zeus/sysroots/x86_64-pokysdk-linux/usr/include/")
set(PATH2 "/opt/fsl-imx-x11/5.4-zeus/sysroots/x86_64-pokysdk-linux/usr/include/libxml2/")
set(PATH3 "/opt/fsl-imx-x11/5.4-zeus/sysroots/cortexa7t2hf-neon-poky-linux-gnueabi/usr/lib")
set(LIB_DIR "${CMAKE_SOURCE_DIR}/lib")

set(SOURCE_FILES src/test.c)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})

# 配置目标头文件路径
target_include_directories(${PROJECT_NAME} PRIVATE
    ${PATH1}
    ${PATH2}
    ${PROJECT_SOURCE_DIR}/include
)

# 导入自定义libOBD2共享库
add_library(libOBD2 SHARED IMPORTED)
set_target_properties(libOBD2 PROPERTIES
    IMPORTED_LOCATION ${LIB_DIR}/libOBD2.so
    INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/include
)

# 添加系统库搜索路径
target_link_directories(${PROJECT_NAME} PRIVATE ${PATH3})
# 配置链接依赖
target_link_libraries(${PROJECT_NAME} PRIVATE
    libOBD2
    z
    ssl
    crypto
    curl
    xml2
    m
    dl
    pthread
    rt
)

使用说明

清空之前的build目录,重新执行cmake、make命令即可正常编译。


内容的提问来源于stack exchange,提问作者heych

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:27:05