概念厘清

本文探讨了在Ubuntu系统中不同版本软件共存时的编译与运行问题,详细介绍了头文件和库文件的搜索顺序,以及如何解决因版本不一致导致的symbol lookup error。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


每一个Ubuntu版本 , 安装软件package时总是有一个默认的软件版本

拿boost 和opencv 来举2个例, :

Ubuntu 14.04 LTS, 软件源中默认对应的boost是1.54.0, opencv 是2.4.8

有时候我们需要装其他版本的软件;

默认的软件安装的路径大致是: 头文件: /usr/inlcude;  库文件: /usr/lib/x86_64-linux-gnu

而自己编译的软件,比如boost 1.60.0和 opencv 3.0.0,  安装路径都是/usr/local,也就是说: /usr/local/include 和 /usr/local/lib

再比如说 opencv 的 pkgconfig/opencv.pc 文件, 2.4.8的是放在 /usr/lib/x86_64-linux-gnu/pkgconfig/opencv.pc , 3.0.0是自己编译的,放在 /usr/local/lib/pkgconfig/opencv.pc 


当存在两个版本的软件时, 这时就应该注意程序的编译和运行问题了

编译时: 注意头文件和库文件的搜索顺序

运行时: 注意库文件的搜索顺序,

更需要注意: 当编译时头文件用的版本和运行时用的库的版本不一致时,就出现 symbol lookup error, 多数情况下这种错误就是这个原因;

所以,不能以为你用ldd看到库引用的版本是正确的就OK,如过编译时头文件版本不对,就会有symbol lookup error;

下面来详细讨论编译和运行时头文件和库的搜索顺序:

 

引用:  http://www.voidcn.com/article/p-audmuddb-bmq.html


 #include “headfile.h”

搜索顺序为:

先搜索当前目录

然后搜索-I指定的目录

再搜索gcc的环境变量CPLUS_INCLUDE_PATHC程序使用的是C_INCLUDE_PATH

最后搜索gcc的内定目录

usr/local/include

/usr/include/x86_64-linux-gnu

/usr/include

 

#include <headfile.h>

先搜索-I指定的目录

然后搜索gcc的环境变量CPLUS_INCLUDE_PATH

最后搜索gcc的内定目录

/usr/local/include

 /usr/include/x86_64-linux-gnu

/usr/include 

也就是说, <> 和 ""的区别在于不搜索 当前目录


这里要特别注意: 在 Ubuntu 14.04上亲测: 内定目录的优先顺序是 /usr/local/include 优先于/usr/include/x86_64-linux-gnu再优先于 /usr/include, 并且不能被-I改变, 也就是说 -I后面跟个内定目录(比如"-I/usr/include")是没有效果的, 

但是在编译的链接阶段,/usr/lib的优先级却又高于/usr/local/lib,并且又通过-L来改变,这真是gcc一个蛋疼的现象;

运行时动态库的搜索路径:

动态库的搜索路径搜索的先后顺序是:

编译目标代码时指定的动态库搜索路径(这是通过gcc 的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间用冒号""分隔)

环境变量LD_LIBRARY_PATH指定的动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号""分隔)

配置文件/etc/ld.so.conf中指定的动态库搜索路径;

默认的动态库搜索路径/lib

默认的动态库搜索路径/usr/lib

应注意动态库搜寻路径并不包括当前文件夹,所以当即使可执行文件和其所需的so文件在同一文件夹,也会出现找不到so的问题,类同#include <header_file>不搜索当前目录


这里要注意: 第一条, 运行时的搜索路径是可能由编译时候规定好的,如果找不到编译时候规定的,才按照后面的顺序查找; 目前,还没有测试过 /lib, /usr/local/lib, /usr/lib/x86_64-linux-gnu的优先顺序; 遇到的例子中,比如ROS使用的boost 1.54.0的库,都属于1的情况;


Image

Graphic

frame


通常说成品图片的时候都是image,  说Graphic通常意味着在技术层面对image内容的改动或讨论, 而frame等于image+帧号


file

path

directory


path通常值的是全路径的文件或目录, 因为本身目录也是文件;  directory单指目录; file本质上包括目录,但偏向指真正的文件;


为什么加权平均可以抑制噪声?

噪声就是像素的强度相对于真值有个突变。从时域上讲,通过高斯滤波能让一个像素的强度与周围的点相关,就减小了突变的影响;从频域上讲,突变引入了高频分量,而高斯滤波器可以滤除高频分量。


取权重的已知要求:

既然每个点都要取周边像素的平均值,那么应该如何分配权重呢?

如果使用简单平均,显然不是很合理,因为图像都是连续的,越靠近的点关系越密切,越远离的点关系越疏远 (好像只知道这个要求, 又想不出其他约束)。因此,加权平均更合理,距离越近的点权重越大,距离越远的点权重越小。


用正态分布(高斯函数)为邻居分配权重


所以, 正态分布就成了一种可取的权重分配模式。


引用: 正态分布的前世今生

http://www.52nlp.cn/%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83%E7%9A%84%E5%89%8D%E4%B8%96%E4%BB%8A%E7%94%9F%E4%B8%80



1, 使用 #pragma once 比使用 #ifndef #endif的方式方便


2, 命名:

    比如, image, graphcic, frame, frame是带有帧id属性的


3, 不要取 std::vector 内元素的地址, 很愚蠢;


1,  线性空间,  更直观的叫法是向量空间;


内容概要:本文介绍了奕斯伟科技集团基于RISC-V架构开发的EAM2011芯片及其应用研究。EAM2011是一款高性能实时控制芯片,支持160MHz主频和AI算法,符合汽车电子AEC-Q100 Grade 2和ASIL-B安全标准。文章详细描述了芯片的关键特性、配套软件开发套件(SDK)和集成开发环境(IDE),以及基于该芯片的ESWINEBP3901开发板的硬件资源和接口配置。文中提供了详细的代码示例,涵盖时钟配置、GPIO控制、ADC采样、CAN通信、PWM输出及RTOS任务创建等功能实现。此外,还介绍了硬件申领流程、技术资料获取渠道及开发建议,帮助开发者高效启动基于EAM2011芯片的开发工作。 适合人群:具备嵌入式系统开发经验的研发人员,特别是对RISC-V架构感兴趣的工程师和技术爱好者。 使用场景及目标:①了解EAM2011芯片的特性和应用场景,如智能汽车、智能家居和工业控制;②掌握基于EAM2011芯片的开发板和芯片的硬件资源和接口配置;③学习如何实现基本的外设驱动,如GPIO、ADC、CAN、PWM等;④通过RTOS任务创建示例,理解多任务处理和实时系统的实现。 其他说明:开发者可以根据实际需求扩展这些基础功能。建议优先掌握《EAM2011参考手册》中的关键外设寄存器配置方法,这对底层驱动开发至关重要。同时,注意硬件申领的时效性和替代方案,确保开发工作的顺利进行。
<think>嗯,用户想了解计算机网络的基本概念,之前系统给了几个站内引用作为背景参考。用户明确要求基础概念介绍,看来可能是刚开始学习网络知识的学生或转行者。从引用内容看,三个材料都聚焦在定义和分类上:引用[1]强调“互连的自治计算机集合”这个核心定义,特别点出Internet是最大实例;引用[2]区分了计算机网络/互联网/互连网三个易混词,还提到数据传输这个关键目标;引用[3]则补充了按范围划分的网络类型。这些正好构成概念介绍的骨架。用户上次没有提问记录,所以重点构建清晰的知识框架。需要特别注意三个要点:一是必须明确“互连”和“自治”这两个定义关键词的准确含义;二是厘清术语区别(比如internet和Internet大小写差异就代表不同概念);三是网络分类维度不能只说范围分类,还得补充拓扑结构等其他视角。考虑到用户可能零基础,要用生活化比喻辅助理解。比如把计算机网络比作“快递系统”,数据包是包裹,协议是运输规则——这个类比在讲数据传输目标时特别有用。LAN/MAN/WAN的举例也选校园网、智慧城市等贴近生活的场景。最后按系统指令准备相关问题。三个问题要层层递进:从定义(识别特征)到实例(加深理解)再到差异比较(知识迁移),这样能帮用户建立认知链条。尤其第三个关于“互连网”和“互联网”区别的问题,直接来自引用[2]的易错点提示。</think> 好的,我们来系统地梳理一下计算机网络的基础概念。理解这些核心定义和目标是学习计算机网络的起点。 **计算机网络的基本概念** 1. **计算机网络的本质定义** * 最核心的定义为:**计算机网络是利用通信设备和线路将地理位置不同的、具有独立功能的多台计算机及其外部设备连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。** * 定义中的关键点: * **互连 (Interconnection):** 计算机和设备需要通过物理的(如网线、光纤)或无线的(如 Wi-Fi、蜂窝网络)通信链路和设备(如交换机、路由器)连接起来。 * **自治的计算机/设备 (Autonomous):** 连接到网络中的每一台计算机或设备(如打印机、智能手机、服务器)本身都是独立的、能够独立运行的实体。它们不是某个巨型主机的一部分。 * **集合 (Collection):** 是指将多个这样的自治系统连接在一起。 * **目的 (Purpose):** 实现**资源共享**(如共享文件、打印机、计算能力)和**信息传递**(如收发邮件、网页浏览、视频通话)。 2. **计算机网络的核心目标** * **数据如何通过网络正确、可靠地从A传送到B:** 这是计算机网络需要解决的最根本问题[^2]。这涉及到数据的封装、寻址、路由选择、错误检测和纠正等一系列机制和协议。 3. **计算机网络、互连网 (internet) 与 互联网/因特网 (Internet) 的区别[^2]** * **计算机网络 (Computer Network):** 指单个或局部的网络,如一个家庭网络、一个校园网络、一个公司内部的局域网(LAN)。它通常由单一的管理机构管理。 * **互连网 (internet):** 泛指多个计算机网络通过路由器等互连设备连接起来形成的更大的网络集合。**“互连网” (internet) 在技术层面,是用小写 ‘i’ 开头,表示技术概念的连接网络**。可以理解为一个通用的术语。比如,将你家网络、学校网络、两个公司网络连接起来,就形成了一个互连网。 * **互联网/因特网 (Internet):** **特指全球最大的、覆盖范围最广的、应用最广泛的互连网**。它是使用特定协议(主要是 TCP/IP 协议族)将全球数亿计的各种计算机网络连接在一起构成的庞大互连网络系统。它由众多的 ISP(Internet Service Provider,互联网服务提供商)网络以及用户网络组成。用户通过有线或无线方式连接 ISP 网络,进而接入 Internet[^1]。 * **简单类比:** “互连网”(internet) 就像是把多个小岛(单个网络)用桥(路由器)连起来组成的一个群岛网络。而 “互联网”(Internet) 就像是全世界所有岛屿(所有大大小小的网络)都用桥连接起来形成的超级大岛群——这整个独一无二的超级网络。 4. **计算机网络的主要分类** 常见的分类依据是**网络覆盖的地理范围**: * **局域网 (Local Area Network, LAN):** 覆盖范围较小,通常在一栋建筑物、一个校园或一个家庭内部(方圆几千米以内)。特点是速度快、延迟低、易于管理。典型例子:家庭 Wi-Fi 网络、办公室网络、校园网[^3]。 * **城域网 (Metropolitan Area Network, MAN):** 覆盖范围扩大到一个城市或其一部分区域。传输距离介于 LAN 和 WAN 之间,通常由电信部门或大型组织建设。用于连接同一城市内的多个 LAN。典型例子:城市宽带网、用于连接多个校区的校园网、智慧城市骨干网络[^3]。 * **广域网 (Wide Area Network, WAN):** 覆盖范围跨越很大的地理区域,通常跨越市、省、国家甚至国际范围。特点是覆盖范围广,但传输速度通常低于 LAN 或 MAN,延迟相对较高。常利用运营商(如电信、移动、联通)提供的公共通信线路。**Internet 就是最庞大的 WAN 实例**。 * **个人区域网 (Personal Area Network, PAN):** 围绕个体用户设备建立的极小范围网络(通常在 10 米以内)。用于连接个人设备,如智能手机、蓝牙耳机、智能手表、笔记本电脑等。常见技术:蓝牙(Bluetooth)、红外(IrDA)、Zigbee、近场通信(NFC)。 **总结:** 计算机网络的核心在于 **“互联互通、资源共享”**。它是由地理上分散的、**互连**的、**自治**的计算机设备组成的系统,核心目标是如何高效、可靠地实现**数据传输(从A到B)**。它从最小范围的 PAN,扩展到局域网 LAN,再到城域网 MAN,最终形成了覆盖全球的广域网 WAN 的典型代表 —— **互联网/因特网 (Internet)**。区分“计算机网络”、“互连网”(internet) 和 “互联网”(Internet) 是理解网络层次和范围的关键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值