linux 怎么指定静态链接静态库

linux 怎么指定静态链接静态库,第1张

创建静态库: ar -rcs test.a *.o 查看静态库: ar -tv test.a 解压静态库: ar -x test.a 查看程序依赖的动态库: readelf -a xxx|grep library 如:可以看到,下面的交叉程序hello执行依赖于如下两个动态库。 rebi@ubuntu:~/test$ arm-none-li...

创建并使用静态库

第一步:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。

vi test.h test.c main.c

第二步:将test.c编译成目标文件。

gcc -c test.c

如果test.c无误,就会得到test.o这个目标文件。

第三步:由.o文件创建静态库。

ar rcs libtest.a test.o

第四步:在程序中使用静态库。

gcc -o main main.c -L. -ltest

因为是静态编译,生成的执行文件可以独立于.a文件运行。

第五步:执行。

./main

示例四 创建并使用动态库

第一步:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。

vi test.h test.c main.c

第二步:将test.c编译成目标文件。

gcc -c test.c

前面两步与创建静态库一致。

第三步:由.o文件创建动态库文件。

gcc -shared -fPIC -o libtest.so test.o

第四步:在程序中使用动态库。

gcc -o main main.c -L. -ltest

当静态库和动态库同名时,gcc命令将优先使用动态库。

第五步:执行。

LD_LIBRARY_PATH=. ./main

示例五 查看静态库中的文件

[root@node56 lib]# ar -t libhycu.a

base64.c.o

binbuf.c.o

cache.c.o

chunk.c.o

codec_a.c.o

Linux系统中静态库是.a文件,编译链接.a文件只需要加上.a文件的完整的文件路径就可以了,比如:

gcc

-o

hello

hello.c

/usr/lib/libm.a

Linux系统的动态库是系统中的.so文件,编译链接动态库需要用-L参数指定动态库的搜索路径,还要用-l(这个是小写的L)指定动态库的名字,比如:

gcc

-o

hello

hello.c

-L/usr/openssl/lib

-lcrypto


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8591446.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存