4 qq_34488499

尚未进行身份认证

暂无相关简介

等级
TA的排名 20w+

Linux的nm查看动态和静态库中的符号

功能列出.o .a .so中的符号信息,包括诸如符号的值,符号类型及符号名称等。所谓符号,通常指定义出的函数,全局变量等等。使用nm [option(s)] [file(s)]有用的options:-A 在每个符号信息的前面打印所在对象文件名称;-C 输出demangle过了的符号名称;-D 打印动态符号;-l 使用对象文件中的调试信息打印出所在

2016-07-10 20:58:13

GDB动态库搜索路径

笔记:当GDB无法显示so动态库的信息或者显示信息有误时,通常是由于库搜索路径错误导致的,可使用set sysroot、set solib-absolute-prefix、set solib-search-path来指定库搜索路径。1. set sysroot 与 set solib-absolute-prefix 是同一条命令,实际上,set sysroot是set solib-

2016-07-10 11:15:52

solib-absolute-prefix 和solib-search-path的区别

solib-absolute-prefix 和solib-search-path是 gdb比较常用的选项,用来设置符号文件的位置。那么,它们有什么区别呢?solib-absolute-prefix设置的是被搜索文件路径的前缀,solib-search-path设置的是被搜索文件的路径。solib-search-path可以有多个路径,中间按用:隔开, solib-absol

2016-07-10 10:58:31

Linux系统调用--getrlimit()与setrlimit()函数详解

功能描述:获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。用法:#include int getrlimit(int resource, s

2016-07-10 10:49:59

linux比较两个文件是否一样(linux命令md5sum使用方法)

1、简介MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。 在linux或Unix上,md5sum是用来计算和校验

2016-07-07 21:37:40

采用dlopen、dlsym、dlclose加载动态链接库【总结】

1、前言  为了使程序方便扩展,具备通用性,可以采用插件形式。采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件。linux提供了加载和处理动态链接库的系统调用,非常方便。本文先从使用上进行总结,涉及到基本的操作方法,关于动态链接库的本质及如何加载进来,需要进一步学习,后续继续补充。如何将程序设计为插件形式,挖掘出主题和业务之间的关系,需要进一

2016-07-07 21:30:49

Linux下的库操作工具-nm、ar、ldd、ldconfig和ld.so

1、nm [options] file    列出file中的所有符号    [option]     -c   将符号转化为用户级的名字     -s   当用于.a文件即静态库时,输出把符号名映射到定义该符号的模块或成员名的索引     -u   显示在file外定义的符号或没有定义的符号     -l   显示每个符号的行号,或为定义符号的重定义项 2、ar {d

2016-07-07 21:24:45

MPEG2相关原理概述

MPEG是运动图像专家组(Moving Picture Experts Group)的简称,其实质上的名称为国际标准化组织(ISO)和国际电工委员会(IEC)联合技术委员会(JTC)1的第29 分委员会的第11工作组,即ISO/IEC JTC1/SC29/WG11,成立于1988年。其任务是制定世界通用的视音频编码标准。因为,广播电视数字化所产生的海量数据对存储容量、传输带宽、 处理能力及频谱资源

2016-06-10 21:40:39

C++虚基类的实现机制:笔记

在《深度探索C++对象模型》里,有一个问题,也是去公司面试的时候那些技术人员常问的问题:在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同。答案是:只有一种情况下才有重大差异,该情况必须满足以下3个条件:(1)、obj 是一个虚拟继承的派生类的对象(2)、mem是从虚拟基类派生下来的成

2016-05-19 23:05:47

C++虚基类的作用

虚基类的作用     当一个基类被声明为虚基类后,即使它成为了多继承链路上的公共基类,最后的派生类中也只有它的一个备份。例如:class CBase { };class CDerive1:virtual public CBase{ };class CDerive2:virtual public CBase{ };class CDerive12:public CDerive1

2016-05-19 22:04:44

编译生成静态库文件

Lunix下编译静态库文件:.o后缀文件:编译生成的中间代码文件;.a后缀文件:静态库文件,编译的时候会合到可执行程序中,文件比较大;.so后缀文件:动态库文件,只是一个指向,不会合到可执行程序中,当要调用函数库的时候才使用; 用一个简单的例子阐述下在lunix环境下生成静态库文件的过程:一.   源码文件:so_test.h:void test_a();voi

2016-05-16 21:54:18

编译生成动态库文件(方式二)

Lunix下生成动态库文件:         之前已经介绍了依靠makefile文件实现可执行文件,下面说下在源文件中指定加载的动态库文件; 一.   源码文件:datetime.h:  #ifndef __DATETIME_H #define __DATETIME_H /* 日期结构 */ typedef struc

2016-05-16 21:52:28

编译生成动态库文件

Lunix下生成动态库文件:         之前已经介绍了.o,.a,.so文件类型的含义,.so后缀的文件是动态库文件。        下面介绍在编译过程中链接到动态库文件的方法:一.   源码文件:so_test.h:void test_a();void test_b();void test_c(); test_a.c:

2016-05-16 21:46:15

vector容器与iterator迭代器

vector容器vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include using std::vector;vector是一个类模板(class t

2016-05-05 07:51:44

C++模板

模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。  模板是一种对类型进行参数化的工具;  通常有两种形式:函数模板和类模板;  函数模板针对仅参数类型不同的函数;  类模板针对仅数据成员和成员函数类型不同的类。  使用模板的目的就是能够让程序员编写与类型无关的代码

2016-05-04 21:29:33

C++分离式编译模式

1.分离编译模式的定义编辑一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件连接起来形成单一的可执行文件的过程。[1] 2.分离编译模式的由来编辑分离编译模式是C/C++组织源代码和生成可执行文件的方式。在实际开发大型项目的时候,不可能把所有的源程序都放在一个头文件中,而是分别由不同的程序员开发不同的模块,再将这

2016-04-25 21:14:48

C++ try catch 用法

一、简单的例子首先通过一个简单的例子来熟悉C++ 的 try/catch/throw:1    #include                                 //包含头文件2    #include3    double fuc(double x, double y)                        //定义函数4    {5   

2016-04-25 20:48:36

范围for语句

其形式是for(declartion: expression)statement;一个简单的实例如下:#include  #include using namespace std;using std::string;int main(){string s="hello world!";int i=0;for(auto c:s)i++;

2016-04-11 07:15:29

String 相关的一些内容

因为某些历史的原因,也为了与C兼容,所以C++语言中的字符串字面值并不是标准库类型string的对象,切记,字符串字面值与string是不同类型。处理string中的字符可以使用其中的cctype头文件中的定义的函数。

2016-04-11 07:14:23

nullptr介绍

#include  using namespace std; int main(){  int *p1=nullptr;int *p2=NULL;cout    return 0;  }  nullptr是C++11 新保准,相当于空指针,地址为零,和NULL相同效果。需要注意的是能将0常量赋值给指针,却不能将int  变量赋值给指针。

2016-03-31 23:06:34

查看更多

勋章 我的勋章
    暂无奖章