静态库与动态库

1、静态库

动态库编译的时候,
并没有将文件编译到可执行文件中去,
而是建立一种链接关系,
这样做的好处是可执行文件很小

动态编译使用的是动态库文件进行编译
gcc  hello.c 	-o 	hello
默认使用到的是动态库编译方法

1-1、制作静态库

gcc -c mylib.c -omylib.o
ar rc libtestlib.a mylib.o
注意:静态库起名的时候必须以lib开头
以  .a  结尾。

1-2、编译程序

方法1:
gcc 	-static	 mytest.c	 libtestlib.a	 -o	 mytest
方法2:
可以指定头文件和库文件的路径
比如libtestlib.a mylib.h 移动到/home/linux下
gcc	 	-static		mytest.c	 -o 	mytest	 -L/home/linux		-ltestlib		-I/home/linux 	
注意:-L是指定库文件路径
		-l指定找那个库,指定的库文件名lib后面	.a	前面的部分
		-I指定头文件路径
方法3:
可以将库文件及头文件放到指定的系统默认路径下
库的默认路径是	/lib	或者是/user/lib
头文件的默认路径是/usr/include
gcc 	-static 	mytest.c	-o 	mytest 	-lteselib

2、动态库

静态编译
静态编译使用的静态库文件进行编译,
编译后将静态库编译进可执行文件。

2-1、制作

gcc 	-shared 	mylib.c 	-o	 libtestlib.so  

2-2、运行

export 	LD_LIBRARY_PATH=./:LD_LIBRARY_PATH
只用执行一次。
方法1:
库文件、头文件均在当前目录下
gcc	 mytest.c	 libtestlib.so 	-o 	mytest

方法2:
	库函数、头文件假设在/opt目录
	gcc 	mytest.c 	-o 	 mytest 	-L/home/linux 	-ltestlib 	-I/home/linux
	通过编译。但是运行会出错,编译时找到了库函数,但是链接不到库,所以要执行链接库的操作,设置环境变量。
	方法3:
	库文件、头文件均在系统路径下
	gcc mytest.c mytest -ltestlib
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值