当前位置: 首页 > news >正文

ubuntu20.04 opencv4.0 /usr/local/lib/libgflags.a(gflags.cc.o): relocation报错解决

在一个只有ubuntu20.04的docker环境中配置opencv4.0.0,
什么库都没有,都要重新安装,
其他的问题在网上都找到了解决方案,唯独这个问题比较棘手:
[ 86%] Linking CXX executable …/…/bin/opencv_annotation
/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o): relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5’ can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[2]: [modules/sfm/CMakeFiles/opencv_sfm.dir/build.make:243: lib/libopencv_sfm.so.4.0.0] Error 1
make[1]: [CMakeFiles/Makefile2:12239: modules/sfm/CMakeFiles/opencv_sfm.dir/all] Error 2

我看出是编译libopencv_sfm.so时出的问题,也看出需要用-fPIC重新编译gflags

# 1. 首先清理之前的安装
sudo apt remove libgflags-dev
cd ~/gflags
rm -rf buildcmake -DCMAKE_BUILD_TYPE=Release \-DBUILD_SHARED_LIBS=ON \-DCMAKE_CXX_FLAGS="-fPIC" \-DCMAKE_C_FLAGS="-fPIC" \-DCMAKE_INSTALL_PREFIX=/usr/local \..# 3. 编译和安装
make -j$(nproc)
sudo make install
sudo ldconfig

编译好之后再重新build opencv,
注意我是在root权限下,不是root的前面都加上sudo

cd ~/opencv/build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.0.0 -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.0.0/modules -D BLAS_LIBRARIES=/usr/lib/x86_64-linux-gnu/libblas.so -D LAPACK_LIBRARIES=/usr/lib/x86_64-linux-gnu/liblapack.so ..make -j8
make install
#更新系统的动态链接库缓存
ldconfigsudo nano ~/.bashrc# 在文件末尾添加以下内容
# 根据自己的安装路径来,我是cmake时指定了安装在/usr/local/opencv4.0.0
export OpenCV_DIR=/usr/local/opencv4.0.0
export PATH=$PATH:$OpenCV_DIR/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OpenCV_DIR/lib
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$OpenCV_DIR/lib/pkgconfig
export CPATH=$CPATH:$OpenCV_DIR/include/opencv4# 保存并退出(在nano中按Ctrl+X,然后按Y确认,最后按Enter)
#用vi也行# 使环境变量生效
source ~/.bashrc

为了确保pkg-config能正确找到OpenCV,还需要创建或修改pkg-config文件:

# 如果pkg-config文件夹不存在,创建它
sudo mkdir -p /usr/local/opencv4.0.0/lib/pkgconfig# 创建opencv4.pc文件
sudo nano /usr/local/opencv4.0.0/lib/pkgconfig/opencv4.pc#添加以下内容
prefix=/usr/local/opencv4.0.0
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${prefix}/libName: OpenCV
Description: Open Source Computer Vision Library
Version: 4.0.0
Cflags: -I${includedir}
Libs: -L${libdir} -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_flann

最后验证安装:

# 检查环境变量是否设置成功
echo $LD_LIBRARY_PATH
echo $PKG_CONFIG_PATH# 检查OpenCV是否能被找到
pkg-config --modversion opencv4

相关文章:

ubuntu20.04 opencv4.0 /usr/local/lib/libgflags.a(gflags.cc.o): relocation报错解决

在一个只有ubuntu20.04的docker环境中配置opencv4.0.0, 什么库都没有,都要重新安装, 其他的问题在网上都找到了解决方案,唯独这个问题比较棘手: [ 86%] Linking CXX executable …/…/bin/opencv_annotation /usr/bin/ld: /usr/lo…...

android openGL ES详解——混合

一、混合概念 混合是一种常用的技巧,通常可以用来实现半透明。但其实它也是十分灵活的,你可以通过不同的设置得到不同的混合结果,产生一些有趣或者奇怪的图象。混合是什么呢?混合就是把两种颜色混在一起。具体一点,就…...

计网--物理层

目录 物理层的任务 1、常见概念 2、信道极限容量 3、传输介质 (1)导引型传输介质 (2)非导引型传输介质 4、信道复用技术 (1)频分 / 时分 复用 (2)波分复用WDM (…...

算法的学习笔记—数组中的逆序对(牛客JZ51)

😀前言 在算法和数据结构领域,"逆序对"是一个经典问题。它在数组中两个数字之间定义,若前面的数字大于后面的数字,则这两个数字组成一个逆序对。我们要做的就是,给定一个数组,找出数组中所有的逆…...

Golang | Leetcode Golang题解之第498题对角线遍历

题目&#xff1a; 题解&#xff1a; func findDiagonalOrder(mat [][]int) []int {m, n : len(mat), len(mat[0])ans : make([]int, 0, m*n)for i : 0; i < mn-1; i {if i%2 1 {x : max(i-n1, 0)y : min(i, n-1)for x < m && y > 0 {ans append(ans, mat[x…...

什么是全局污染?怎么避免全局污染?

全局污染&#xff08;Global Pollution&#xff09;是指在编程过程中&#xff0c;过度使用全局变量或对象导致命名冲突、代码可维护性下降及潜在错误增加的问题。在 JavaScript 等动态语言中&#xff0c;尤其需要关注全局污染的风险。 全局污染的影响 1. 命名冲突 3. 意外修改…...

C# 串口通信教程

串口通信&#xff08;Serial Communication&#xff09;是一种用于设备之间数据传输的常见方法&#xff0c;通常用于与外部硬件设备&#xff08;如传感器、机器人、微控制器&#xff09;进行通信。在 C# 中&#xff0c;System.IO.Ports 命名空间提供了与串口设备交互的功能&…...

PHP编程基础

PHP&#xff08;Hypertext Preprocessor&#xff0c;超文本预处理器&#xff09;是一种广泛使用的开源服务器端脚本语言&#xff0c;主要用于网页开发&#xff0c;同时也可以进行命令行脚本编写。以下是PHP编程的基础知识&#xff1a; 1. PHP文件结构 PHP文件通常以 .php 为扩…...

TwinCAT3下位机配置EAP通讯传递与接收变量

添加EAP设备 DEVICE中右键选择添加新项&#xff0c;添加EAP&#xff08;EtherCAT Automation Protocal&#xff09;选择Network Variables类型&#xff0c;如下图。 设置网络适配器来激活EAP&#xff0c;在Adapter中选择search&#xff0c;选择网络适配器后确定&#xff0c;…...

近似推断 - 期望最大化(EM)篇

前言 近似推断是统计学和机器学习中一个至关重要的领域&#xff0c;尤其在处理复杂模型和不完全数据时显得尤为重要。期望最大化&#xff08; Expectation Maximization \text{Expectation Maximization} Expectation Maximization&#xff0c;简称 EM \text{EM} EM&#xff0…...

arp欺骗及其实验

ARP欺骗&#xff08;ARP Spoofing&#xff09;是一种网络攻击技术&#xff0c;攻击者通过伪造ARP&#xff08;地址解析协议&#xff09;消息&#xff0c;将其MAC地址与目标IP地址关联&#xff0c;从而实现对网络流量的截获、篡改或重定向。以下是ARP欺骗的详细信息&#xff1a;…...

HDU The Boss on Mars(容斥原理)

题目大意&#xff1a; ACM 有 n 名员工&#xff0c;现在是他们从老板那里拿薪水的时候了。所有员工都从 1 到 n 编号。原因不明&#xff0c;如果员工的工作编号是 k&#xff0c;他今年可以获得 k^4 Mars 美元。所以为 ACM 工作的员工非常富有。 因为员工人数太多&#xff0c;…...

nnUnet 大模型学习笔记(续):训练网络(3d_fullres)以及数据集标签的处理

目录 1. 数据集处理 1.1 实现脚本 1.2 json文件 2. 设置读取路径 2.1 设置路径 2.2 数据集转换 2.3 数据集预处理 2.4 训练&#xff08;3d_fullres) 3. 训练结果展示 关于nnUnet 数据集的处理和环境搭建&#xff0c;参考上文&#xff1a;第四章&#xff1a;nnUnet大模…...

Java中的数据结构与集合源码

目录 一、数据结构 1.1 数据结构概念 1.2 研究对象 1.3 常见存储结构 1.3.1 数组 1.3.2 链表 1.单向链表 2.双向链表 1.3.3 二叉树 1.3.4 栈&#xff08;FILO&#xff0c;先进后出&#xff09; 1.3.5 队列&#xff08;FIFO&#xff0c;先进先出&#xff09; 二、集合…...

Java应用程序的测试覆盖率之设计与实现(三)-- jacoco cli 客户端

一、背景 上文已把覆盖率数据采集好了&#xff0c;并提供远程连接的tcp地址及端口。 jacoco cli文档jacoco cli jar包 jacococli.jar 我下载好了&#xff0c;放在github工程里。 本文主要是介绍如何使用jacoco cli 客户端读取并生成覆盖率报告。 二、使用 1、dump覆盖率统…...

Deepin V23 / 统信UOS 下安装与配置 tftp

几个月前&#xff0c;我将开发系统从 ubuntu 切换到 Deepin&#xff0c;当时写过一篇文章《使用国产操作系统作为开发系统》。几个月下来&#xff0c;没有感觉有什么不适应&#xff0c;Ubuntu 能做的事情&#xff0c;在 Deepin 上都能做。而且有 UOS 应用商店的加持&#xff0c…...

java基础学习:定时任务常见实现方式

一、Timer解析 TaskQueue&#xff1a;小顶堆&#xff0c;存放timeTask。 TimerThread&#xff1a;任务执行线程 死循环不断检查是否有任务需要开始执行&#xff0c;有就执行它。始终是一个线程在执行。 单线程执行任务&#xff0c;任务有可能相互阻塞&#xff1a; schedul…...

句柄是什么?有什么用?举例说明

在C#编程中&#xff0c;“句柄”&#xff08;Handle&#xff09;是一个与操作系统资源相关联的标识符。句柄是一个指针或者索引&#xff0c;用于在程序代码中引用系统资源&#xff0c;如窗口、文件、线程等。由于直接操作这些资源非常危险且复杂&#xff0c;操作系统提供句柄作…...

Jenkins学习笔记

Jenkins学习笔记 NumTitleComments1官网 官方网站 中文文档2基础Jenkins基础3groovy1.groovy语法 2.groovy 入门4pipelinepipeline基本语法介绍5Github actiongithub action6Shared library1 2...

AI 解读软考高级操作系统顺序存取、直接存取、随机存取、相联存取的区别

这几个术语描述了不同类型的存储方式&#xff0c;它们涉及数据存取的顺序和灵活性。为了更好地理解&#xff0c;我们可以先通过生活中的例子来感受这些概念。 生活化例子 1. 顺序存取&#xff1a; 想象你在看一盘录像带&#xff08;比如老式的VHS录像带&#xff09;。如果你想…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...