静态、动态库的创建使用与makefile配置文件的编写
2017-01-18 20:24
585 查看
静态库的创建
①gcc -c 源文件.c //产生目标文件
②ar rcs 静态库名(lib··.a)
目标文件1 目标文件2 ····
rs:静态库不存在,就创建该文件;
S:更新库文件;
静态库的使用
gcc -o file file.c -L. -lname
file:名字 file.c:主函数 name:静态库名中的名字
ar -t libname.a 列出库中有哪些库文件
ar -d libname.a add.o 把指定文件add.o删除
ar -dv libname.a add.o 能给出出错提示
ar -x(v) libname.a
文件 从指令库中把文件提取出来(复制文件)
例:add():int add (int a,int b)
{
return a+b;
}
sub():int sub (int a,int b)
{
return a-b;
}
mul():int mul (int a,int b)
{
return a*b;
}
div():int div(int a,int b)
{
return a/b;
}
main():#include <stdio.h>
int main(void)
{
int a,b;
scanf("%d %d",&a,&b);
printf("add a and b is %d.\n",add(a,b));
printf("sub a and b is %d.\n",sub(a,b));
printf("mul a and b is %d.\n",mul(a,b));
printf("div a and b is %d.\n",div(a,b));
return 0;
}
①gcc -c add.c sub.c div.c mul.c
生成 add.o sub.o div.o mul.o
②ar rcs libmain.a add.o sub.o div.o mul.o
生成 libmain.a
文件
③gcc -o four main.c -L. -lmain
生成 four
最终可执行的文件
动态库的创建
gcc -shared -fPIC -o 库名.so 源文件.c
动态库的使用
gcc 源文件.c
./库名.So -o 可执行文件名
例:上面程序
①gcc -shared -fPIC -o libmain.so add.c sub.c div.c mul.c
生成 libmain.so
文件
②gcc main.c ./libmain.so
-o main
生成可执行文件 main
工程管理器make
makefile配置文件的编写规则:
①需要由make工具创建的目标体,目标文件或可执行文件;
②创建的目标体所依赖的文件;
③创建每个目标体时运行的命令,所有命令以制表符(tab键)开始;
makfile格式:
target:dependency_files
<tab键>command
例:上面程序
①终端中输入vim makefile
编写makefile文件
法一:
main:add.o sub.o mul.o div.o main.o
gcc -o main add.o sub.o mul.o div.o main.o
add.o:add.c
Gcc -c add.c
sub.o:sub.c
gcc -c sub.c
mul.o:mul.c
gcc -c mul.c
div.o:div.c
gcc -c div.c
main.o:main.c
gcc -c main.c
法二:
main:add.c sub.c mul.c div.c main.c
gcc -o main add.c sub.c mul.c div.c main.c
②保存退出后,直接打make
执行
伪命令:
.PHONY: clean //伪指令的声明
clean:
rm-f hello main.o func1 func2 ···
例:
Install:
mkdir ./tmp
mv *.o ./tmp
mv main ./tmp
创建一个目录tmp,将生成的
.o 文件放入tmp目录中,然后将可执行文件也放入tmp目录中。
静态库的创建
①gcc -c 源文件.c //产生目标文件
②ar rcs 静态库名(lib··.a)
目标文件1 目标文件2 ····
rs:静态库不存在,就创建该文件;
S:更新库文件;
静态库的使用
gcc -o file file.c -L. -lname
file:名字 file.c:主函数 name:静态库名中的名字
ar -t libname.a 列出库中有哪些库文件
ar -d libname.a add.o 把指定文件add.o删除
ar -dv libname.a add.o 能给出出错提示
ar -x(v) libname.a
文件 从指令库中把文件提取出来(复制文件)
例:add():int add (int a,int b)
{
return a+b;
}
sub():int sub (int a,int b)
{
return a-b;
}
mul():int mul (int a,int b)
{
return a*b;
}
div():int div(int a,int b)
{
return a/b;
}
main():#include <stdio.h>
int main(void)
{
int a,b;
scanf("%d %d",&a,&b);
printf("add a and b is %d.\n",add(a,b));
printf("sub a and b is %d.\n",sub(a,b));
printf("mul a and b is %d.\n",mul(a,b));
printf("div a and b is %d.\n",div(a,b));
return 0;
}
①gcc -c add.c sub.c div.c mul.c
生成 add.o sub.o div.o mul.o
②ar rcs libmain.a add.o sub.o div.o mul.o
生成 libmain.a
文件
③gcc -o four main.c -L. -lmain
生成 four
最终可执行的文件
动态库的创建
gcc -shared -fPIC -o 库名.so 源文件.c
动态库的使用
gcc 源文件.c
./库名.So -o 可执行文件名
例:上面程序
①gcc -shared -fPIC -o libmain.so add.c sub.c div.c mul.c
生成 libmain.so
文件
②gcc main.c ./libmain.so
-o main
生成可执行文件 main
工程管理器make
makefile配置文件的编写规则:
①需要由make工具创建的目标体,目标文件或可执行文件;
②创建的目标体所依赖的文件;
③创建每个目标体时运行的命令,所有命令以制表符(tab键)开始;
makfile格式:
target:dependency_files
<tab键>command
例:上面程序
①终端中输入vim makefile
编写makefile文件
法一:
main:add.o sub.o mul.o div.o main.o
gcc -o main add.o sub.o mul.o div.o main.o
add.o:add.c
Gcc -c add.c
sub.o:sub.c
gcc -c sub.c
mul.o:mul.c
gcc -c mul.c
div.o:div.c
gcc -c div.c
main.o:main.c
gcc -c main.c
法二:
main:add.c sub.c mul.c div.c main.c
gcc -o main add.c sub.c mul.c div.c main.c
②保存退出后,直接打make
执行
伪命令:
.PHONY: clean //伪指令的声明
clean:
rm-f hello main.o func1 func2 ···
例:
Install:
mkdir ./tmp
mv *.o ./tmp
mv main ./tmp
创建一个目录tmp,将生成的
.o 文件放入tmp目录中,然后将可执行文件也放入tmp目录中。
相关文章推荐
- 静态库创建与使用 makefile文件 linux 常用命令 honker
- gcc 使用静态库文件 链接库文件 .a makefile .so
- ADPLUS使用配置文件设置断点时无法创建DUMP文件原因分析
- VNC XEN 双鼠标问题 以及 使用 virt-manager 工具创建的 Xen 虚拟机配置文件不在 /etc/xen/ 目录中了
- 一步步学习SPD2010--第七章节--使用BCS业务连接服务(8)--创建配置文件页面
- 黑马程序员_ADO.Net(配置文件的两种写法与使用方法,手动编写SqlHelper类)
- 使用定义文件和WINAPI宏编写自己的API动态库
- 使用配置文件来存储数据库链接信息时---工具类的编写
- VNC XEN 双鼠标问题 以及 使用 virt-manager 工具创建的 Xen 虚拟机配置文件不在 /etc/xen/ 目录中了
- 使用OpenCV官方提供文件配置、静态编译并运行OpenCV-2.3.x/2.4.x实例
- 一步步学习SPD2010--第七章节--使用BCS业务连接服务(8)--创建配置文件页面
- [转]使用makefile更新静态库文件
- [转载] linux下创建和使用静态和动态库
- nodejs使用nodejs创建简单的静态文件服务器
- 使用Properties文件配置实例的创建
- 修改web.xml 去掉jetty锁定静态文件的问题 的配置(正点-使用maven,jetty配合)
- Linux下创建和使用静态和动态库
- 使用hibernate自动在MYSQL中创建表,极其简单,改下配置文件。
- 7.7.2: Bean实例的创建方式及依赖配置---使用静态工厂方法创建Bean
- Linux下静态、动态库(隐式、显式调用)的创建和使用及区别