赞
踩
1.用 gcc 生成 .a 静态库和 .so 动态库
1.1编辑生成例子程序 hello.h、hello.c 和 main.c
dxc@dxc-virtual-machine:~$ mkdir test1 //创建test1目录
dxc@dxc-virtual-machine:~$ cd test1 //进入test1目录,创建文件将处于该文件夹内
dxc@dxc-virtual-machine:~/test1$ touch hello.h //依次创建头文件、源程序、主程序
dxc@dxc-virtual-machine:~/test1$ touch hello.c
dxc@dxc-virtual-machine:~/test1$ touch main.c
1.2编译文件
dxc@dxc-virtual-machine:~/test1$ gedit hello.h //进入头文件编辑界面并输入代码 #ifndef HELLO_H #define HELLO_H void hello(const char *name); #endif //HELLO_H dxc@dxc-virtual-machine:~/test1$ gedit hello.c //进入源程序编辑界面并输入代码 #include <stdio.h> void hello(const char *name) { printf("Hello %s!\n", name); } dxc@dxc-virtual-machine:~/test1$ gedit main.c //进入主程序编辑界面并输入代码 #include "hello.h" int main() { hello("everyone"); return 0; }
1.3将 hello.c 编译成.o 文件
dxc@dxc-virtual-machine:~/test1$ gcc -c hello.c //生成 hello.o 文件
dxc@dxc-virtual-machine:~/test1$ ls //运行 ls 命令查看是否生存了 hello.o 文件
如图已生成
1.4创建静态库
dxc@dxc-virtual-machine:~/test$ ar -crv libmyhello.a hello.o //创建静态库文件libmyhello.a
dxc@dxc-virtual-machine:~/test$ ls //查看结果
如图已将创建完成
1.5在程序中使用静态库
方法一:
dxc@dxc-virtual-machine:~/test1$ gcc -o hello main.c -L. -lmyhello
方法二:
dxc@dxc-virtual-machine:~/test1$ gcc main.c libmyhello.a -o hello
方法三:
dxc@dxc-virtual-machine:~/test$ gcc -c main.c //生成 main.o
dxc@dxc-virtual-machine:~/test$ gcc -o hello main.o libmyhello.a //生成可执行文件
dxc@dxc-virtual-machine:~/test$ ./hello
1.6创建动态库文件
dxc@dxc-virtual-machine:~/test1$ gcc -shared -fPIC -o libmyhello.so hello.o //创建动态库文件 libmyhello.so
dxc@dxc-virtual-machine:~/test1$ ls //查看动态库文件是否生成
hello hello.c hello.h hello.o libmyhello.so main.c main.o
1.7使用动态库
dxc@dxc-virtual-machine~/test1$ gcc -o hello main.c -
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。