cmak交叉编译出现连接错误及rpath讲解

本文介绍了在进行交叉编译时遇到的库找不到的错误,特别是对于依赖较多的库如opencv。解决方案是利用rpath来指定运行时库的查找路径。rpath是将库路径存储在二进制文件中,以便运行时查找依赖。$ORIGIN是一个特殊符号,代表程序的目录。通过在CMakeLists.txt中设置rpath,可以确保编译链接成功,并在运行时正确找到库。
摘要由CSDN通过智能技术生成

交叉编译时经常出现 not found (try using -rpath or -rpath-link)这样的错误
因为我们是交叉编译所以缺少库是经常发生的事。特别是编一些依赖比较多的库的时候,比如opencv等等

出现这个肯定是交叉编译环境里面没有相应的库。那么此时我们可以设置rpath 让程序先编译链接通过。
rpath是什么?
说白了其实就是将库路径存储在二进制文件中以在运行时查找依赖项的能力

那么我们将rpath 设置一下,让他在链接的时候先不找,等到运行的时候就可以去相应的目录找了
$ORIGIN是什么?
ld.so在rpath规范中理解字符串$ORIGIN就代表程序的目录

那么此时我们可以设置CMakeLists.txt 的内容如下所示

cmake_minimum_required(VERSION 2.7)
project(htest)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -std=c++11 -lpthread -Wl,--rpath='$ORI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值