- 博客(1005)
- 资源 (1)
- 收藏
- 关注
转载 #include < > 和 #include “ “ 的区别
注意:虽然#include " " 查找更广,但不能把它当做万金油,因为#include " " 查找顺序存在先后关系,如果项目当前目录或引用目录下存在与系统目录重名的头文件,就不会再去继续查找,存在头文件覆盖问题。另外,对于系统头文件,用#include包含,查找时一步到位,编译时效率更高。如果项目配置的头文件引用目录中仍然查找失败,再从系统类库目录里查找头文件,因此,对于系统库头文件,#include 和 #include " " 的作用一样,都能查找成功。
2023-06-07 16:02:35
3
转载 python xxx.py和python -m xxx.py有什么区别
这个时候,到底是使用直接启动,还是以模块的启动?目的就是把import的那个模块的路径放到sys.path中。你需要注意:在启动的时候需要考虑sys.path中有没有你import的模块的路径!不同的加载py文件的方式,主要是影响——sys.path 这个属性。模块启动是把你输入命令的目录(也就是当前路径),放到了sys.path属性中***下面有两个例子,通过不同方式启动同一文件,sys.path属性的值有何不同。直接启动是把run.py文件,所在的目录放到了sys.path属性中。
2023-06-07 14:49:40
4
转载 C++中的Lambda表达式详解
对于Lambda的使用,说实话,我没有什么多说的,个人理解,在没有Lambda之前的C++ , 我们也是那样好好的使用,并没有对缺少Lambda的C++有什么抱怨,而现在有了Lambda表达式,只是更多的方便了我们去写代码。不知道大家是否记得C++ STL库中的仿函数对象,仿函数想对于普通函数来说,仿函数可以拥有初始化状态,而这些初始化状态是在声明仿函数对象时,通过参数指定的,一般都是保存在仿函数对象的私有变量中;相反的,如果需要捕捉的值成成为Lambda函数运行时的变量,则应该采用按引用方式进行捕捉。
2023-05-31 10:11:58
13
转载 当你在腾讯云遇到 /lib64/libcrypto.so.10...short该怎么办
问题机器系统CentOS7.6,通过腾讯云VNC后台登录上去服务器,这里说明下原理,VNC相当于通过console方式连接到云主机,不依赖于网络。当咱们云服务被各种“不可抗力”因素导致网络不通或者sshd挂掉的情况下可以通过VNC的方法进行登录。腾讯云主机VNC登录入口果然没有那么简单哈,报错了,咱们查看一下sshd状态看看具体是啥报错查看sshd状态。
2023-05-25 12:32:23
35
转载 error while loading shared libraries的解决方案
当运行程序时会出现如下类似错误时:默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定–prefix,会将库安装在/usr/local/lib目录下;当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说,/usr/local/lib目录不在系统默认的库搜索目录中,需要将目录加进去。
2023-05-25 12:28:17
20
转载 Linux —— 动态库和静态库
https://blog.csdn.net/sjsjnsjnn/article/details/125836184目录一、认识动静态库 二、回顾编译链接的过程三、库的制作和使用 1.静态库的制作 1.生成二进制(.o)文件2.打包3.发布静态库2.静态库的使用方法一 方法二3.动态库的制作 1.生成二进制(.o)文件2.打包3.发布动态库4.动态库的使用方法一方法二 四、动态库与静态库特点总结1.静态库的制作 总结: 1.生成二进制(.o)文件
2023-05-23 13:56:07
18
转载 Linux命令之ldd命令
LDD用来打印或者查看程序运行所需的共享库,常用来解决程序因缺少某个库文件而不能运行的一些问题。ldd不是一个可执行程序,而只是一个shell脚本。
2023-05-22 12:08:09
15
转载 Linux中usr/lib 与 Anaconda环境依赖库lib冲突的问题
当我们需要去编译一些C++的库时,通常CMake会去在环境中寻找需要的库,此时我们安装在/usr/lib等路径的库可能会与anaconda中的库重复,并产生冲突。CMake可能会使库引用指向Anaconda环境中的库。由于编译器的不同,在编译过程中则会产生编译error。当我们在Linux环境中使用anaconda去管理Python环境时,Anaconda会下载安装一些适用于Python环境的库。此时,在此Terminal中PATH暂时去除了Anaconda环境路径,运行CMake则可以解决冲突。
2023-05-18 09:36:57
30
转载 gcc编译参数-Wl和rpath的理解
注:我自己的一般方法是在可执行文件位于构建树中,并依赖于构建树中的其他库时,将其与–rpath选项链接,以便于调试,但在安装(make install,building packages)时,需要在不使用–rpath选项的情况下重新链接,并将查找共享库的任务留给目标平台的适当。,例如你显示指定的需要 FOO.so,但是 FOO.so 本身是需要 BAR.so 的,后者你并没有指定,而是 FOO.so 引用到它,这个时候,会先从 -rpath-link 给的路径里找。指定了运行时的so搜索路径。
2023-05-18 09:26:15
176
转载 XShell 上下滚屏及锁定屏幕快捷键
使用时打印日志滚动太快,无法复制需要的信息,使用如下命令就可以了。Shift + 上方向键/下方向键。Ctrl+S:锁定当前屏幕。Ctrl+Q:解锁当前屏幕。
2023-05-17 12:25:26
19
转载 linux系统中lib,lib-dev,lib-dbg库的区别
咱们开发编译程序的时候通常会选libxx-dev包。在shell中进行搜索drm相关的包。
2023-05-16 13:44:02
16
转载 了解automake和autoconf(autoreconf)[通俗易懂]
所必须的软件:autoconf/automake/m4/perl/libtool(其中libtool非必须)。autoconf是一个用于生成可以自动地配置软件源码包,用以适应多种UNIX类系统的shell脚本工具,其中autoconf需要用到 m4,便于生成脚本。automake是一个从Makefile.am文件自动生成Makefile.in的工具。为了生成Makefile.in,automake还需用到perl,由于automake创建的发布完全遵循GNU标准,所以在创建中不需要perl。
2023-05-11 12:32:25
23
转载 git submodule使用
https://blog.csdn.net/u011608357/article/details/127742023在工程中加入依赖,有很多的依赖管理工具可用,比如前端工程的npm,安卓的gradle,iOS的cocoaPods等,有时我们不方便使用以上工具的时候,还可以使用git的submodule依赖三方库或者自己写的库。本文介绍git submodule的基本使用方法。添加submodule依赖假设我们有两个仓库名称为cpp-test和submodule-test,现在在cpp-test中依赖subm
2023-05-10 16:37:55
22
转载 Boost的安装与使用
不止用在new/delete,也用在fopen()/fclose(),dlopen()/dlclose()等。可以把任意类型的数据放在any中,用的时候再any_cast出类型。实现,不需要编译成二进制文件。变量离开(正常/异常)作用域,再触发处理代码。把参数中的一个函数参数固定,其他的再赋值。大部分boost库的头文件主要由模板和。==字符串转换为类的类型 ==用boost库可以让类不可复制。:容器销毁自动释放指针。字符串转整型或浮点型。与析构函数相似的作用。
2023-05-10 15:02:53
46
转载 头文件与库文件的区别
例如abc.cpp 源文件中实现了abc()函数,我们假设abc()函数是包含重要算法的函数,我们需要将abc()函数提供给客户使用,但是不希望客户看到算法源代码。为了达到这一目的,我们可以将abc.cpp编译程库文件,库文件是二进制的,在库文件中是看不到原始的源代码的。使用时应包括stdio.h,打开stdio.h你只能看到,printf这个函数的申明,却看不到printf具体是怎么实现的,而函数的实现在相应的C库中。从编程的角度讲,通常有静态库文件和动态库文件。——————-转载分界线——————–
2023-05-10 14:56:57
42
转载 【C语言】调试工具GDB简述
b 19是breakpoint 19的简写(breakpoint的参数也可以以是某个函数名,表示在此函数处设置一个断点),表示在程序第19行设置一个断点。c是continue的缩写,表示继续运行程序,程序会在设置断点处停下来。每个断点都有一个编号(有的断点行数不一样,但地址却一样,有的地方不能够设置断点或者说与上一个设置的断点等效),可以用编号指定删除某个断点。gdb提供一个类似Shell的命令行环境,上面的(gdb)就是提示符,在提示符后面输入gdb的相应命令就可以实现其对应的功能。
2023-05-10 14:20:48
22
转载 C++ Lambda表达式(匿名函数): [](){}
Lambda函数可以引用在它之外声明的变量. 这些变量的集合叫做一个闭包. 闭包被定义在Lambda表达式声明中的方括号[]内. 这个机制允许这些变量被按值或按引用捕获.在Lambda表达式中,如果以传值方式捕获外部变量,则函数体中不能修改该外部变量,否则会引发编译错误。什么也不返回的Lambda函数可以省略返回类型, 而不需要使用 -> void 形式.匿名函数(英文名:lambda)就是没有名字的函数。eg.2. 自定义sort()排序规则。,它没有参数也没有返回值。参数列表中不能有默认参数。
2023-05-04 14:37:55
59
转载 RSA与 Diffie-Hellman密钥交换 的区别
最近查看jsch源码时,在理解DH密钥交换算法时,与RSA傻傻的分不清。当时看源码犯了迷糊:既然已经有更先进的RSA,为什么还要使用DH密钥交换算法。之后,看了一位日本人写的《图解密码技术》这本书时,才有所顿悟。这里我做个笔记;因为是笔记,所以估计只有我能看懂!哈哈可以看出,RSA中的公钥和私钥与DH密钥协商都是用来解决密钥配送问题的!RSA利用 最大公约数(互质)来求出 公钥和私钥。DH密钥协商则是利用生成元来得到共享密钥。
2023-04-28 15:36:23
42
转载 linux glibc不兼容问题解决
CentOS 6 自带的 glibc 还是很老的 2.12 版本,而下载的第三方程序依赖 glibc 2.17 版本,这种情况要么自己重新编译程序,要么只能升级系统的 glibc 版本。由于我使用的程序是第三方编写并且是闭源软件无法自己编译,升级 glibc 固然可能能解决问题,但是 glibc 做为最核心的基础库,在生产环境上直接升级毕竟动作还是太大,因此希望还是能有更好的解决途径。看过这里就基本明白了,第三方程序的开发者是在自带新版本 glibc 的 Linux 系统上编译的,
2023-04-28 14:43:03
286
转载 c语言中#define的使用
在很多C程序中,我们会在一个源文件的开头看到#define的字眼,和define的英文解释相同——可以理解为给xxx下定义,这里可以是标识符甚至是一个函数,接下来的内容将会对#define进行详解使用#define可以用来定义标识符,所谓标识符可以简单理解为一个能够表示一定内容的符号,其格式为#定义 标识符 内容简单介绍几个例子#define MAX 100 // 将 MAX 这个标识符和 100 这个数字关联起来。
2023-04-27 12:10:52
41
转载 c++命名空间用法总结
我们假设这两个命名空间分别为first和second,我们在这两个命名空间里定义两个变量,变量名都是var,写一个程序。我们通常坚持使用显式的限定,并且仅将using指令局限在很小的作用域中,这样他们的效用就会受到限制并且易于使用。导入的整个的first的namespace,前一对x,y的值就是first中的x,y的值。因为cout是包括在命名空间std里的,这个符号你可以理解为“的”,比如std的cout。可以看到两个不同的namespace都被限制在了不同作用域中了,他们之间就没有冲突。
2023-04-27 10:43:32
28
转载 linux系统gcc降版本,并更改默认版本
因为只设置了一个,所以显示结果为:"链接组 gcc (提供 /usr/bin/gcc)中只有一个候选项:/usr/bin/gcc-4.8无需配置.",如果有多个则会显示一个按优先级的列表.最后的数字为优先级(越大越高),因为只有一个8版本作为alternatives,可以不要纠结数字,这样设就行了。设置前可以先输入命令ls /usr/bin/gcc* 查看gcc 8版本是否安装成功。(4)最后再次输入命令gcc -v查看gcc的版本已经变成了8.4了,成功了。(2)设置gcc的默认版本。
2023-04-26 22:27:23
100
转载 高版本Ubuntu(如22.02)修改apt源,快速安装低版本gcc/g++
的gcc和g++版本不同,如Ubuntu22.04默认安装gcc/g++为11版本,高版本Ubuntu无法直接通过apt install gcc安装低版本编译器,可以通过离线安装(过于繁琐),本文推荐修改apt源,添加对应低版本ubuntu源即可,这里以Ubuntu22.04为例,给出安装gcc-5/gcc-7的简单方法,同时给出了常用的国内镜像源。2. Ubuntu22.04默认安装gcc-11版本,如果需要安装低版本,可以修改apt源,添加低版本ubuntu源来安装。使用下面命令修改apt源。
2023-04-26 22:23:49
269
转载 GCC之g++详解
最初的GNU C编译器(GCC)是由GNU项目的创始人Richard Stallman开发的。Richard Stallman于1984年创建了GNU项目,以创建一个完整的类Unix操作系统作为自由软件,以促进计算机用户和程序员之间的自由和合作。
2023-04-24 10:20:44
31
原创 find_package查找boost库时的配置参数说明
Boost_USE_STATIC_LIBS:打开时,使用静态 Boost 库;Boost::headers 的别名 Boost::boost 是。# Boost_USE_MULTITHREADED:关闭时,使用单线程库。# Boost_USE_STATIC_RUNTIME:打开时,使用链接到。# Boost_USE_RELEASE_LIBS:关闭时,禁用发布库。# Boost_USE_DEBUG_RUNTIME:打开时,使用链接到。# Boost_USE_DEBUG_LIBS:关闭时,禁用调试库。
2023-04-23 16:51:27
27
转载 关闭Windows浏览器播放弹出的多媒体控制台
该模块的显示取决于浏览器的功能,由浏览器提供支持。因此需要在使用的浏览器内关闭hardware media key handling功能/首选项。关于具体的设置,建议咨询该浏览器的运营商/支持人员,或查看其官网的文档。在按下FN功能键进行音量调整时或者锁屏时,如果浏览器正在播放视频或者音频,会有一个很大的区域展示你当前播放的视频和音频的名称,并在界面上提供播放/暂停/下一首/上一首等按钮。然后在浏览器内播放视频,看下是否快速设置中不再显示多媒体模块。建议重启浏览器后,再关闭浏览器,然后重启一下电脑。
2023-04-19 14:59:20
85
转载 Boost库的编译
的编译Win7 sp1 64位旗舰版 + VS2008 sp1 + boost 1.633.1 解压boost_1_63_0.7z到C:\boost_1_63_0 (路径可任意选择,最好不要包含中文和空格);3.2 使用VC2008的命令行工具并cd到C:\boost_1_63_03.3 输入bootstrap.bat即可生成b2.exe和bjam.exe我这里是全编译:// 编译Debug版// 编译Release版// Debug版和Release版都编译。
2023-04-18 15:00:29
13
转载 boost库编译安装b2参数link 和 runtime-link,搭配shared 和 static
link:生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用 static方式。runtime-link:动态/静态链接C/C++运行时库。同样有shared和static两种方 式,这样runtime-link和link一共可以产生4种组合方式。虽然它和link属性没有直接关系,但我们习惯上,一个工程如果用动态链接那么所 有库都用动态链接,如果用静态链接那么所有库都用静态链接。
2023-04-18 14:52:12
52
转载 Windows平台NASM汇编语言环境搭建
然后用gcc就可以制作exe文件。当然,制作exe还有很多种其他方式,这里选择gcc的优势是:当有dll时,我可以直接依赖dll,而不需要lib文件。就这一个优势,就秒杀了其它一众软件。在如下网址下载,当前的stable版本是2.15.05。把以上代码保存为demo.asm,然后在cmd下输入如下指令,输出了“Hello world!比如我把下载的文件解压缩到如下目录:D:\C\nasm-2.15.05-win32。下面记录NASM的环境搭建过程。这样nasm的环境就搭好了。以上就是nasm的编程环境。
2023-04-17 17:48:24
130
转载 $‘\r‘: command not found的解决方法
出现这样的错误,是因为Shell脚本在Windows系统编写时,每行结尾是。,所以在Linux系统中运行脚本时,会认为。,而在Linux系统中行每行结尾是。是一个字符,导致运行错误。去除Shell脚本的。
2023-04-17 17:25:49
29
转载 git下载太慢的改进方法
git config --global http.lowSpeedTime 999999 # 设置最低速度时间,单位秒。$ git clone --depth 1 --branch 分支名 https://github.com/xxx.git。$ git config --global core.compression -1 # 设置默认压缩方法。$ git config --global http.lowSpeedLimit 0 # 设置最低速度。 b) github使用时太卡完美解决。
2023-04-14 14:54:36
28
转载 ubuntu 20.04安装(升级)cmake
访问源码包列表链接,可以选择我们指定的版本下载安装。通过源码安装,我们可以安装指定版本的。解压后,会在当前路径下生成一个。如果看到版本号,表示安装成功!如果输出如下,表示未安装。cmake源码包列表。
2023-04-14 14:31:11
81
转载 ubuntu修改系统时区
wq保存退出,然后reboot重启服务器即可生效,date命令查看是24小时时间格式。看到时间与现在的北京时间一样就设置完成了。4、检查时区是是否修改成功,结果时区是:-0000。,所以需要重新设置时区。
2023-04-13 16:42:08
23
转载 Linux下动态库(.so)和静态库(.a) 的区别
3、在要静态连接的库前指定-Bstatic ,在要动态连接的库前指定-Bdynamic选项。3、使用 "gcc -o libdynamic.so -shared -fPIC -L. -lstatic_shared dynamic.o",连接成功,但.so里实际上没有static.o里还是没有的内容。1、使用 "gcc -o libdynamic.so -shared -fPIC -L. -lstatic dynamic.o ",连接成功,但.so里实际上没有static.o里的内容。
2023-04-11 10:53:08
40
转载 python 第一行 #!/usr/bin/python 详解
usr/bin/env python 这种用法是为了防止操作系统用户没有将 python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到 env 设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。有这句的,加上执行权限后,可以直接用 ./ 执行,不然会出错,因为找不到 python 解释器。是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器。/usr/bin/python 指定解释器的路径。
2023-04-10 14:57:31
23
转载 git clone子项目的方式
有时上的工程可能会包含一些子模块,例如这时候如果你只是用下面的命令下载,下载完之后会发现easydk文件夹是空的,有两种方法下载子模块。
2023-04-10 14:28:45
143
转载 RSA加密、解密、签名、验签的原理及方法
所以在实际应用中,要根据情况使用,也可以同时使用加密和签名,比如A和B都有一套自己的公钥和私钥,当A要给B发送消息时,先用B的公钥对消息加密,再对加密的消息使用A的私钥加签名,达到既不泄露也不被篡改,更能保证消息的安全性。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回复给B,防止了消息内容的篡改。
2023-04-06 17:11:50
107
转载 加密与安全:图解非对称加密算法 RSA 数字签名与数字证书
这时候我们需要一个权威的第三方机构(CA)确认这一个公钥确实是真实的服务器的公钥,服务器将自己的公钥和一些私人信息发给 CA,CA 用自己的私钥将这些数据加密之后就是数字证书(SSL证书)。当别人收到你的公告时,他可以用你的公钥解密你的签名,如果解密成功,并且解密出来的哈希值确实和你的公告原文做哈希处理后是一致的,那就证明了两点:这消息确实是你发的,而且内容是完整的。当服务器向客户端发送数据的时候,还附带上从 CA 下载到本地的证书,客户端拿到证书以后使用CA的公钥进行解密,确认服务器的公钥无误。
2023-04-06 17:10:41
92
myeclipse 8.5M 取消空格上屏
2015-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人