每个程序实质上都会链接到一个或者多个的库.比如使用C函数的程序会链接到C运行时库,GUI程序会链接到窗口库等等.无论哪种情况,你都会要决定是链接到静态库(static libary)还是动态库(dynamic libary).链接到静态库会使你的程序臃肿,并且难以升级,但是可能会比较容易部署.而链接到动态库会使你的程序轻便,并且易于升级,但是会难以部署. 静态库静态库也就相当于是把一系列的object文件放在同一个文件中(类似windows中的.lib文件).当你提供一个静态库给链接器时,连接器…
概述 Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库.linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib. 静态函数库: 这类库的名字一般是libxxx.a:利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进可执行文件了.当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译,而且体积也较大. 动态函数库…
静态库 有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如libc就是这样一个库, 我们在不同的程序中都会用到libc中的库函数(例如printf),也会用到libc中的变量(例如以后 要讲到的environ变量).本文将介绍怎么创建这样一个库. 这些文件的目录结构是: $ tree . |-- main.c `-- stack |-- is_empty.c |-- pop.c |-- push.c |-- stack.c `-- stack.h 1 directory, 6 f…
背景: 因最近试安装Linux下的jira,有一个中文插件安装后,一旦设置开机启动后,它是英文,而在终端再重新启动一次后呢,似乎插件生效,它又恢复为正常中文界面,我首先想这这涉及到一个环境变量的问题,因为在我设置开机启动的服务时用service jira start出现找不到一些变量,如:获取不到java的home目录,提示找不到,为此,我加上了java的环境变量开机启动Ok了,但是英文,我对英文认识少,但还是想用中文,否则插件就等于白安了. 为此,需要弄清这两者的环境变量的区别在哪儿,如何查看…
每次感觉配这个超级简单 但是每次都要查下 记一下好了 Linux下安装jdk,步骤如下 1:下载jdk包:本章使用的为后缀为tar.gz的文件(不需要安装),如jdk-8u111-linux-x64.tar.gz 下载RPM包: wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/ot…
Shell Script是一种弱类型语言,使用变量的时候无需首先声明其类型. 局部变量在本地数据区分配内存进行存储,这个变量归当前的Shell所有,任何子进 程都不能访问本地变量.这些变量与环境变量不同,环境变量被存储在另一内存区,叫做用户环境区,这块内存中的变量可以被子进程访问.变量赋值的方式是: variable_name = variable_value 如果对一个已经有值的变量赋值,新值将取代旧值.取值的时候要在变量名前加$,$variable_name可以在引号中使用,这一点和其他高级…
注意其中使用函数返回基类指针的用法,因为Linux的动态链接库不能像MFC中那样直接导出类 一.介绍 如何使用dlopen API动态地加载C++函数和类,是Unix C++程序员经常碰到的问题. 事实上,情况偶尔有些复杂,需要一些解释.这正是写这篇mini HOWTO的缘由. 理解这篇文档的前提是对C/C++语言中dlopen API有基本的了解. 这篇HOWTO的维护链接是: http://www.isotton.com/howtos/C++-dlopen-mini-HOWTO/ 二.问题所…
刚刚移植了sqlite3迫切想测试一些,结果将原来在ubuntu系统下写好且测试通过的程序,重新编译就报错,无法找到已定义的函数 这是由于没有使用库或者使用了错误的就.库造成的结果. 正确做法为: arm-none-linux-gnueabi-gcc –o database-test –L 你需要的库文件地址 –I 你需要的头文件的地址 xxx.c –lsqlite3 -L 指定自己的库地址 -I 指定的头文件地址 好了可以使用文件了 如果指定需要的头文件和库.可以分别在-I和-L中指定.…
.a 文件的结构和.tar文件就没有什么区别. x 命令解出来, a 命令添加, t命令列表 假设A.a, B.a C.a 在/usr/local/lib目录下 mkdir /tmp/libABC cd /tmp/libABC ar x /usr/local/lib/A.a ar x /usr/local/lib/B.a ar x /usr/local/lib/C.a ar cru libABC.a *.o ranlib libABC.a…
作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). C++静态库与动态库 这次分享的宗旨是——让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书<程序员的自我修养——链接.装载与库>. 什么是库 库是写好的现有的,成熟的,可以复用的代码.现实中每…