您的位置:首页 > 其它

GCC编译静态库和动态库

2016-05-28 00:00 211 查看
一、动态库的编译和使用

[code=plain]//hello.c
#include<stdio.h>
void hello()
{
printf("This is hello!\n");
}


编译命令:gcc -shared hello.c -o libhello.so

可以看到,当前目录下多了一个文件libhello.so

测试test.c

[code=plain]//test.c
#include<stdio.h>
int main()
{
printf("call hello()\n");
hello();
}


编译这个测试程序:gcc test.c -lhello -L. -o test

-lhello 指定要连接的库,文件名默认规则是libxxx.so

-L . 是指定库的目录

注意:编译成功但是执行会出错,执行是动态连接这个库会找不到路径,可以复制libhello.so到 /usr/lib等共用lib目录

或者修改环境变量export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

二、静态库的编译和使用

编译命令:gcc -c hello.c 这里会生成hello.o

生成静态库:ar -r libhello.a hello.o 将hello.o插入静态库

编译测试程序:

gcc test.c -lhello -L. -static -o hello.out

gcc test.c libhello.a -L. -o hello.out
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: