lib

C语言的本质(34)——静态库

一世执手 提交于 2020-01-28 12:16:26
库是一种软件组件技术,库里面封装了数据和函数。 库的使用可以使程序模块化。 Windows系统包括静态链接库(.lib文件)和动态链接库(.dll文件)。 Linux通常把库文件存放在/usr/lib或/lib目录下。 Linux库文件名由:前缀lib、库名和后缀3部分组成,其中动态链接库以.so最为后缀,静态链接库通常以.a作为后缀。 在程序中使用使用静态库和动态库时,他们载入的顺序是不同的。 静态库的代码在编译时就拷贝的应用程序中,这样的优点是节省编译时间。 动态链接库时程序在开始运行后调用库函数时才被载入。 静态库,也称为归档文件(archive),按照惯例它们的名字都以 .a 结尾。比如,标准C语言函数库 /usr/lib/libc.a 和 X11 函数库 /usr/x11/lib/libx11.a . 我们可以容易地创建和维护自已的静态库,只要使用 ar 程序和 gcc -c命令对函数进行分别编译就可以了。 静态库的创建和使用: 1、在一个头文件种声明静态库所导出的函数。 2、在一个源文件种实现静态库所导出的函数。 3、编译源文件,生成可执行代码。 4、将可执行代码所在的目标文件加入到某个静态库中,并将静态库拷贝到系统默认的存放库文件的目录下。 下面通过一个例子来说明:mylib.h种存放的是静态库提供给用户使用的函数的声明,mylib.c实现了mylib.h种声明的函数

install arm-none-eabi into cygwin with win10 OS

给你一囗甜甜゛ 提交于 2020-01-28 11:54:37
1 Install Cygwin with WIN10 https://cygwin.com/install.html Installing and Updating Cygwin Packages Installing and Updating Cygwin for 64-bit versions of Windows Run setup-x86_64.exe any time you want to update or install a Cygwin package for 64-bit windows. The signature for setup-x86_64.exe can be used to verify the validity of this binary using this public key. Installing and Updating Cygwin for 32-bit versions of Windows Run setup-x86.exe any time you want to update or install a Cygwin package for 32-bit windows. The signature for setup-x86.exe can be used to verify the validity of this

java打jar包,引用其他.jar文件

◇◆丶佛笑我妖孽 提交于 2020-01-28 01:09:42
大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口。 具体的方法是修改jar包内目录META-INF下的MANIFEST.MF文件。 比如有个叫做test.jar的jar包,里面有一个拥有main函数的main class:test.someClassName 我们就只要在MANIFEST.MF里面添加如下一句话: Main-Class: test.someClassName 然后我们可以在控制台里输入java -jar test.jar即可以运行这个jar。 但是我们这个项目需要引用其他第三方的jar包,在eclipse里面以项目jar包的形式引用了这个叫做some.jar的包,当时放在项目的lib子目录下,最后项目打包时把这个some.jar也打进来了,但是用java -jar执行这个test.jar的时候报找不到Class异常,原因就是jar引用不到放在自己内部的jar包。 那怎么办? 运行时将其加入classpath的方式行不行?就是在运行jar的同时加入classpath参数: java -classpath some.jar -jar test.jar 这种方式应该能解决问题吧,试一下,还是不行。 查了下资料,原来使用java -jar 命令运行jar包时classpath参数将会失效

C语言的本质(34)——静态库

你离开我真会死。 提交于 2020-01-28 00:20:20
库是一种软件组件技术,库里面封装了数据和函数。 库的使用可以使程序模块化。 Windows系统包括静态链接库(.lib文件)和动态链接库(.dll文件)。 Linux通常把库文件存放在/usr/lib或/lib目录下。 Linux库文件名由:前缀lib、库名和后缀3部分组成,其中动态链接库以.so最为后缀,静态链接库通常以.a作为后缀。 在程序中使用使用静态库和动态库时,他们载入的顺序是不同的。 静态库的代码在编译时就拷贝的应用程序中,这样的优点是节省编译时间。 动态链接库时程序在开始运行后调用库函数时才被载入。 静态库,也称为归档文件(archive),按照惯例它们的名字都以 .a 结尾。比如,标准C语言函数库 /usr/lib/libc.a 和 X11 函数库 /usr/x11/lib/libx11.a . 我们可以容易地创建和维护自已的静态库,只要使用 ar 程序和 gcc -c命令对函数进行分别编译就可以了。 静态库的创建和使用: 1、在一个头文件种声明静态库所导出的函数。 2、在一个源文件种实现静态库所导出的函数。 3、编译源文件,生成可执行代码。 4、将可执行代码所在的目标文件加入到某个静态库中,并将静态库拷贝到系统默认的存放库文件的目录下。 下面通过一个例子来说明:mylib.h种存放的是静态库提供给用户使用的函数的声明,mylib.c实现了mylib.h种声明的函数

Centos7配置JAVA_HOME

旧巷老猫 提交于 2020-01-27 23:30:27
A 定位JDK安装路径 1. 终端输入: which java 输出为: /usr/bin/java 2. 终端输入: ls -lr /usr/bin/java 输出为: /usr/bin/java -> 3. 终端输入 ls -lrt /etc/alternatives/java 输出: /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/bin/java 至此,我们确定java的安装目录为: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64 B 配置JAVA_HOME 1. 打开配置环境变量的文件 vi /etc/profile 2. 添加以下配置: export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

ES6模块之export和import详解

*爱你&永不变心* 提交于 2020-01-27 23:00:36
ES6模块之export和import详解: https://blog.csdn.net/qq_28506819/article/details/75733601 ES6中的模块即使一个包含JS代码的文件,在这个模块中所有的变量都是对其他模块不可见的,除非我们导出它。ES6的模块系统大致分为导出(export)和导入(import)两个模块。 1、模块导出(export) 你可以 导出 所有的最外层 函数 、 类 以及 var 、 let 或 const 声明的变量。 ES6模块只支持静态导入和导出,你只可以在模块的最外层作用域使用 import 和 export ,不可在条件语句中使用,也不能在函数作用域中使用 import 。所有导出的标识符一定要在源代码中明确地导出它们的名称,你不能通过编写代码遍历一个数组然后用数据驱动的方式导出一堆名称。如下导出是错误的。 function squre( ) {}; if( true) { export {squre}; } ES6的导出分为名字导出和默认导出 1、名字导出(name export) 名字导出可以在模块中导出多个声明。 //------ lib.js ------ export const sqrt = Math.sqrt; export function square( x) { return x * x; }

linux下如何使用自己的库函数

与世无争的帅哥 提交于 2020-01-27 05:41:53
******转自别人的,保存下,以备日后需要************* 在 Linux 下如何使用自己的库函数 近日学习了Linux下的库函数,结合网上得到的资料和自己体会,做成以下参考资料 一 使用库必要性 提高代码重用性。 二 库的种类: 1 静态库 一般以 *.a 命名。 程序编译时被加载,此后,只要程序不被重新编译,静态库就没有作用了(可以删掉)。 由于静态库的代码在编译过程中已经被载入可执行程序,因此体积较大,如果有多个应用程序都用了同一个静态库,在存放可执行程序的硬盘中就会有这个静态库的多份拷贝。如果他们同时在运行,那么在内存中也会有这个静态库的多份拷贝。但是如下面提到的动态库相比较,程序执行时间比较短,因为没有执行时库函数的加载。所谓“以空间换时间”。 下面我们用一个实例说明静态库的编程和使用。 // 库函数: hellowlib.c #include <stdlib.h> void printhellow() { printf("hellow,now in lib routine\n"); return ; } 首先生成目标文件: gcc -c printhellow.c –o printhellow.o 然后使用 ar ( archive )命令把目标文件制作库文件: ar cqs libhello.a printhellow.o 注意库文件名一定是 lib***

Linux目录

风格不统一 提交于 2020-01-27 01:01:55
/ : 所有目录都在(越小越好) /boot : boot 配置文件、内核和其它启动 时所需的文件 /etc : 存放系统配置有关的文件 /etc/init.d 服务启动与关闭 /home : 存放普通用户目录 /mnt : 硬盘上手动 挂载的文件系统 /media : 自动挂载(加载)的硬盘分区以及类似CD、数码相机等可移动介质。 /cdrom : 挂载光盘? /opt : (第三方软件)存放一些可选程序,如某个程序测试版本,安装到该目录的程序的所有数据,库文件都存在同个目录下 /root : 系统管理员的目录,对于系统来说,系统管理员好比上帝,他可以对系统做任何操作,比如删除你的文件,一般情况下不要使用root用户。 /bin : 存放常用的程序文件(单用户模式下的命令文件)。 /sbin : 系统管理命令,这里存放的是系统管理员使用的管理程序 (开机需要的命令,修复,还原等) /tmp : 临时目录,存放临时文件,系统会定期清理该目录下的文件。 /usr : (存放大多数软件)在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具。比如游戏、打印工具等。/usr目录包含了许多子目录: /usr/bin目录用于存放程序;/usr/share用于存放一些共享的数据,比如音乐文件或者图标等等;/usr/lib目录用于存放那些不能直接 运行的

linux命令g---gcc

故事扮演 提交于 2020-01-26 19:07:51
1、-l:用来指定程序要链接的库,库名是m,他的库文件名是libm.so,把库文件名的头lib和尾.so去掉就是库名 当我们自已要用到一个第三方提供的库名字libtest.so,只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,就能用上libtest.so库了(当然要用libtest.so库里的函数,我们还需要与libtest.so配套的头文件) 2、-L:放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so,这时编译时用-L/usr/X11R6/lib -lX11参数,-L参数跟着的是库文件所在的目录名。比如我们把libtest.so放在/aaa/bbb/ccc目录下,那链接参数就是-L/aaa/bbb/ccc -ltest 另外,大部分libxxxx.so只是一个链接,以RH9为例,比如libm.so它链接到/lib/libm.so.x,/lib/libm.so.6又链接到/lib/libm-2.3.2.so,如果没有这样的链接,还是会出错,因为ld只会找libxxxx.so

未完成的研究

偶尔善良 提交于 2020-01-26 11:27:57
报错:error while loading shared libraries: libpcap.so.0.8: cannot open shared object file: No such file or directory 问题描述:报错找不到的库其实是安装了的,但是仍然报错找不到, Q1,linux的.so文件是啥? Linux下的.so文件是动态链接库,其功能和作用类似与windows下.dll文件。 Q2,while loading shared libraries 系统会去哪loading? 百度有人说,系统的默认搜索依赖库路径为/lib,和/usr/lib,和/usr/local/lib, Q3,为什么No such file or directory? find / -name libpcap.so.0.8  无结果 find / -name libpcap.so   发现了/usr/lib64/libpcap.so 待研究,, Q4,libpcap.so和libpcap.so.0.8的区别 知识点 一、.so和.a .so后缀的文件是linux下的动态链接库。动态函数库在编译的时候没有被编译进目标代码中,程序执行到相关函数时才调用它。由于函数库没有被整合进程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供依赖的库。