linux下的制作静态库并使用它
2016-02-19 16:14
731 查看
静态库所要用的源文件
文件 fred.c
#include <stdio.h>
void fred(int argc)
{
printf("void fred(int argc) | argc is [%d]\n", argc);
}
文件 bill.c
#include <stdio.h>
void bill(char * argv)
{
printf("void bill(char * argv) | argv is [%s]\n", argv);
}
编译库文件所需要的目标文件
gcc -c bill.c -o bill.o
gcc -c fred.c -o fred.o
上述命令中的 -c 只是对源程序进行编译。而不是去进行链接。
将目标文件进行打包
ar cvr libMylib.a bill.o fred.o
编写一个调用库文件的源文件
头文件 myLib.h
void fred(int argc);
void bill(char * argv);
main 函数文件 staticLibTest.c
#include <myLib.h>
#include <stdlib.h>
int main (int argc, char ** argv)
{
fred(argc);
bill(argv[0]);
exit(0);
}
编译 staticLibTest.c,得到目标文件 staticLibTest.o。使用的命令如下:
gcc -c staticLibTest.c
最后一步,将staticLibTest.o 和使用的“第三方”的库文件进行链接,得到可执行程序.
gcc -o staticLibTest staticLibTest.o -L. -lMylib
命令说明:-L. 表示程序使用的第三方库所在的路径。-lMylib表示其使用的第三方库文件的名称。名称的获取方式为去掉文件名的前三个字符lib,去掉后面的.a这样的后缀名。
或者
gcc -o staticLibTest1 staticLibTest.o libMylib.a
程序运行结果
./staticLibTest
void fred(int argc) | argc is [1]
void bill(char * argv) | argv is [./staticLibTest]
文件 fred.c
#include <stdio.h>
void fred(int argc)
{
printf("void fred(int argc) | argc is [%d]\n", argc);
}
文件 bill.c
#include <stdio.h>
void bill(char * argv)
{
printf("void bill(char * argv) | argv is [%s]\n", argv);
}
编译库文件所需要的目标文件
gcc -c bill.c -o bill.o
gcc -c fred.c -o fred.o
上述命令中的 -c 只是对源程序进行编译。而不是去进行链接。
将目标文件进行打包
ar cvr libMylib.a bill.o fred.o
编写一个调用库文件的源文件
头文件 myLib.h
void fred(int argc);
void bill(char * argv);
main 函数文件 staticLibTest.c
#include <myLib.h>
#include <stdlib.h>
int main (int argc, char ** argv)
{
fred(argc);
bill(argv[0]);
exit(0);
}
编译 staticLibTest.c,得到目标文件 staticLibTest.o。使用的命令如下:
gcc -c staticLibTest.c
最后一步,将staticLibTest.o 和使用的“第三方”的库文件进行链接,得到可执行程序.
gcc -o staticLibTest staticLibTest.o -L. -lMylib
命令说明:-L. 表示程序使用的第三方库所在的路径。-lMylib表示其使用的第三方库文件的名称。名称的获取方式为去掉文件名的前三个字符lib,去掉后面的.a这样的后缀名。
或者
gcc -o staticLibTest1 staticLibTest.o libMylib.a
程序运行结果
./staticLibTest
void fred(int argc) | argc is [1]
void bill(char * argv) | argv is [./staticLibTest]
相关文章推荐
- linux下的第一个C程序及其编译方法
- linux软链接和硬链接的区别
- linux文件去重
- linux 下实用的命令
- Linux禁止root账户远程登录
- linux笔记_文件搜索命令
- Linux定时任务Crontab详解
- 自己平时用到的linux命令
- linux C gbk utf-8编码转换
- linux内嵌汇编语言
- 在CentOS_RHEL 6上安装Metasploit的框架
- Linux 查看进程
- linux获取外网ip
- linux vi编辑常用命令
- Linux TLS - pthread_setspcific
- linux日志:syslogd和klogd
- 【小镇的技术之路】Linux中的文件描述符
- linux新加动态库后,使用中遇到的找不到的问题以及ldconfig讲解
- Linux下命令行显示当前全路径方法
- Linux 新建用户、用户组,给用户分配权限(chown、useradd、groupadd、userdel、usermod、passwd、groupdel)