汉中商城网站建设,有哪些网站是做分期付款的,互联网设计院,龙岗网站建设公司电话一、概念
库是一个二进制文件#xff0c;包含的代码可被程序调用。例如标准C库、数学库、线程库...
库有源码#xff0c;可下载后编译#xff1b;也可以直接安装二进制包。
库是事先编译好的#xff0c;可以复用的代码。
在OS上运行的程序基本上都要使用库#xff0c;…一、概念
库是一个二进制文件包含的代码可被程序调用。例如标准C库、数学库、线程库...
库有源码可下载后编译也可以直接安装二进制包。
库是事先编译好的可以复用的代码。
在OS上运行的程序基本上都要使用库使用库可以提高开发效率。
Windows和Linux下的库文件的格式不兼容。
Linux下包含静态库和共享库。
二、静态库
1.静态库特点
编译链接时把静态库中相关代码复制到可执行文件中。
程序中已包含代码运行时不再需要静态库。
程序运行时无需加载库运行库速度更快。
占用更多磁盘和内存空间。
静态库升级后程序需要重新编译链接。
2.静态库的创建
1.编写库文件代码编译为.o目标文件。
2.ar 命令 创建libxxxx.a 文件
ar -rsv libxxxx.a xxxx.o
注意1静态库名字要以lib开头后缀名为.a 2没有main函数的.c文件不能生成可执行文件。
3.链接错误
test.c:(.text0x15)对‘hello’未定义的引用
collect2: error: ld returned 1 exit status
含义表示hello函数在编译的源码内没有找到实现
解决实现代码或者找到对应函数的库并且链接它。
4.链接静态库 gcc -o 目标文件 源码.c -L路径 -lxxxx -L表示库所在的路径 -l后面跟库的名称
三、动态库
1.生成位置无关代码的目标文件 gcc -c -fPIC xxx.c xxxx.c ....
2.生成动态库 gcc -shared -o libxxxx.so xxx.o xxx.o ....
3.编译可执行文件 gcc -o 目标文件 源码.c -L路径 -lxxxx
2.可执行文件错误
./test: error while loading shared libraries: libmyheby.so: cannot open shared object file: No such file or directory
含义可执行文件所使用的动态库找不到
解决办法 找到动态库添加到/usr/lib里面 或者使用export LD_LIBRARY_PATH$LD_LIBRARY_PATH:你的动态库目录 添加在~/.bashrc 文件里面 使用source ~/.bashrc 生效。