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

为QNX编译gRPC示例时遭遇链接错误求助

解决QNX构建gRPC示例时的链接器错误

问题背景

已成功为QNX编译gRPC,构建示例时执行以下命令:

cmake -DCMAKE_C_COMPILER=qcc -DCMAKE_CXX_COMPILER=q++ ../..

出现链接器错误,提示找不到-lpthread和-ldl:

[ 90%] Linking CXX executable greeter_client
[ 95%] Linking CXX executable greeter_async_client
[100%] Linking CXX executable greeter_async_server
/home/csa/src/qnx//host/linux/x86_64/usr/bin/x86_64-pc-nto-qnx7.1.0-ld: cannot find -lpthread
/home/csa/src/qnx//host/linux/x86_64/usr/bin/x86_64-pc-nto-qnx7.1.0-ld: cannot find -lpthread
/home/csa/src/qnx//host/linux/x86_64/usr/bin/x86_64-pc-nto-qnx7.1.0-ld: cannot find -lpthread
/home/csa/src/qnx//host/linux/x86_64/usr/bin/x86_64-pc-nto-qnx7.1.0-ld: cannot find -ldl
/home/csa/src/qnx//host/linux/x86_64/usr/bin/x86_64-pc-nto-qnx7.1.0-ld: cannot find -ldl
/home/csa/src/qnx//host/linux/x86_64/usr/bin/x86_64-pc-nto-qnx7.1.0-ld: cannot find -ldl

解决方案

QNX系统中,线程和动态链接的功能都集成在libc.so中,没有单独的libpthread.so和libdl.so,因此需要修改CMake的链接配置:

1. 直接修改CMake命令

将以下参数添加到构建命令中,跳过对pthread和dl库的自动链接:

cmake -DCMAKE_C_COMPILER=qcc -DCMAKE_CXX_COMPILER=q++ \
  -DCMAKE_THREAD_LIBS_INIT="" \
  -DTHREADS_PTHREAD_ARG="" \
  -DCMAKE_DL_LIBS="" \
  ../..

2. 修改CMakeLists.txt

如果有权限修改示例的CMakeLists.txt,可添加以下配置:

# 禁用pthread库链接
set(CMAKE_THREAD_LIBS_INIT "")
set(THREADS_PTHREAD_ARG "")

# 禁用dl库链接
set(CMAKE_DL_LIBS "")

3. 额外建议

如果编译gRPC时未指定QNX工具链,建议重新编译gRPC时使用QNX的工具链文件,这样构建示例时会自动继承适配QNX的链接设置,避免此类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:45:42