一次undefined reference to ***的编译错误记录

一、问题描述 在编译C++程序时,遇到以下问题: 看到错误的第一直觉是共享库出问题了,因为以前出现这个问题都是因为库没有加进来,但是反复确认过后发现共享库并没有问题。 第一:编译的时候使用-l选项包含了库文件,并且库里面的函数也存在。 第二:库确实存在,不然也不会报上面的错误了,报的错误应该是: 试...
阅读全文

gcc使用-Wl,-rpath解决so库版本冲突

一、 问题描述 最近工作中遇到了一个问题:项目需要合入其他部门的模块,但是其中的一个共用共享库被更新了。因为项目很大,如果直接在我们的环境中替换更新这个库,很有可能会影响到其他模块。祖传的代码流传了差不多20年,涉及的模块也十分之多,贸然升级的风险很难评估。但是不替换这个库第三方模块又跑不起来,一度...
阅读全文
CentOS启动报错dracut Warning: Boot has failed的解决方法 CentOS

CentOS启动报错dracut Warning: Boot has failed的解决方法

CentOS无法启动,启动分区无法找到,然后就报了个堆栈信息: 看样子是磁盘找不到了,想想前不久加了个磁盘装了其他的系统,会不会是影响了分区。 然后进去到另外的ubuntu系统,查看分区表: 发现分区全部挂在了sdb,然而实际上最开始装系统的时候磁盘应该是sda: 分析了一下分区信息,其中 sdb1...
阅读全文

c语言可变长参数传递问题

一、问题描述 C语言中的函数提供了一种可变长参数机制,这个机制使得我们在操作的时候充分自定义自己的功能,例如使用最多的printf函数: 它的函数声明为:printf(const char *fmt, ...);,其中的...就代表不固定的参数,使用起来十分方便。但是在函数嵌套的时候,不能直接使用....
阅读全文
程序编译和链接的过程 C/C++

程序编译和链接的过程

一、概述 一个程序在从源码变成二进制程序之间一共有四个步骤:预处理,编译,生成目标文件,链接。 以下展示了一个简单的加法程序的编译过程: 二、预处理 预处理阶段主要有以下的操作: 头文件替换 宏定义替换 删除注释 预处理指令处理 在GCC中,-E选项用于预处理,执行g++ main.cpp -E -...
阅读全文
nginx使用fancyindex目录索引 nginx

nginx使用fancyindex目录索引

一、nginx目录索引 nginx中内置了目录索引命令 auto_index ,十分方便就能给目录生成web索引: 效果如下: 两个可选的命令是 autoindex_exact_size 和 autoindex_localtime ,分别表示是否精确显示文件大小(以字节方式)和是否显示本地时间,两个...
阅读全文
安装EXSI遇到No Network Adapters的解决方案 常用软件

安装EXSI遇到No Network Adapters的解决方案

一、问题描述 安装esxi途中遇到了找不到网卡驱动的问题: 这是因为iso文件中本身没有添加当前设备网卡的驱动,需要手动导入属于自己网卡的的驱动。 第一步先确定自己的网卡型号: 我这里有两块网卡,一个有线网卡 Realtek 8111/8168/8411和一个无线网卡Broadcom Limited...
阅读全文
一种奇特的方式破解BeyondCompare4 常用软件

一种奇特的方式破解BeyondCompare4

BeyondCompare是一款优秀的文件对比工具,网上大部分的破解教程都已经被和谐,找了很久才找到一个异类的破解方式,尝试了一下真的有效。 在目录C:\Users\用户\AppData\Roaming\BeyondCompare下有一个文件BeyondCompare419.ini,里面保存了安装的...
阅读全文