linux学习记录

函数库有静态库和动态库两种:

静态库是一系列的目标文件(.o)的归档文件,文件名为libname.a(如果自己写libmyself则库名就为lmyself)。如果在编译某个程序时链接静态库,则链接器将会搜索静态库,从中提取出它需要的目标文件并直接复制到该程序的可执行二进制文件(ELF格式文件)之中;

   动态库【.主版本号.次版本号.发行号】。在程序编译时并不会被链接到目标代码中,而是在程序运行时才被载入。

生成静态库步骤:

    -c生成.o文件(.o文件来生成库文件。包含静态库和动态库)

#gcc c unsgn_pow.c

通过.o文件生成静态库文件

#ar rcsv libmytest.a unsgn_pow.o

通过生成的静态库文件进行对测试程序的导入并运行。(注意最后一个库名跟上面的相似之处)

#gcc o pow_test pow_test.c L . lmytest   (如果上面库文件名写成libmy.a 则这边应写成-lmy)

最后运行程序

#./pow_test 2 10

    

生成动态库步骤

       -fPIC Wall -c生成.o文件

       #gcc fPIC Wall c unsgn_pow.c

通过.o文件以及-shared o (库名)生成动态库文件

       #gcc shared o libmytest.so unsgn_pow.o

       通过生成的动态库文件编译测试程序

       #gcc o pow_test pow_test.c L . lmytest

       在运行可执行程序之前,需要注册动态库的路径名。方法有:

       修改/etc/ld.so.conf文件,之后还要运行# ldconfig

//

ld.so.conf 文件包含一个所有目录(/lib /usr/lib 除外,它们会自动包含在其中)的清单,动态装入器将在其中查找共享库。

ld.so.cache

在动态装入器能“看到”这一信息之前,必须将它转换到 ld.so.cache 文件中。可以通过运行 ldconfig 命令做到这一点:

# ldconfig

  当 ldconfig 操作结束时,您会有一个最新的 /etc/ld.so.cache 文件,它反映您对 /etc/ld.so.conf 所做的更改。从这一刻起,动态装入器在寻找共享库时会查看您在 /etc/ld.so.conf 中指定的所有新目录。

//

或者修改LD_LIBRARY_PATH环境变量,或者将库文件直接复制到/lib或者/usr/lib目录下

       #cp libmytest.so /lib

       运行程序

       #./pow_test 2 10

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值