Linux 编译静态链接库与动态链接库的方法
2015-11-09 18:24
686 查看
// hello.c #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World!\n"); return 0; } 1、编译生成可执行文件 gcc -o test hello.c 2、编译生成目标文件 gcc -c -o test.o hello.c // string.c #define ENDSTRING '\0' int StrLen(char *string) { int len = 0; while (*string++ != ENDSTRING) len++; return len; } // main.c #include <stdio.h> extern int StrLen(char *str); int main(int argc, char *argv[]) { char src[] = "Hello Dymatic"; printf("string length is:%d\n", StrLen(src)); return 0; } 3、多文件编译 gcc -o test string.c main.c 4、预处理 gcc -E string.c -o string.i 5、编译成汇编语言 gcc -S string.c 6、生成静态链接库 .a 文件 ar -rcs libstr.a string.o 7、使用静态链接库 gcc -o test main.c -L./ -lstr 或 gcc -o test main.c libstr.a // 在使用-l选项时,-o选项要在-l选项之前出现,否则gcc会认为-l是生成的目标而出错 8、生成动态链接库 gcc -fPIC -shared -Wl,-soname,libstr.so -o libstr.so.1 string.c -Wall:包含warning信息; -fPIC:编译动态库所必须的, 输出不依赖位置的代码; -shared:编译动态库必须选项; -W1:向连接器传递一些参数,在这里传递的参数有"-soname", "libstr.so"; -o:动态库的名字,在这个例子里最终生成动态库libstr.so.1; 9、Linux系统中动态链接库搜索路径配置文件 /etc/ld.so.conf 也可以通过ldconfig <动态链接库所在绝对路径>,来添加动态链接库搜索路径 10、编译可执行程序test调用libstr.so gcc -o test main.c -L./ -lstr 或 gcc -o test main.c libstr.so
相关文章推荐
- Linux DHCP
- Linux中的静态库和动态库简介及生成过程示例
- Linux基础命令一
- linux ubuntu 下 安装openfire
- CentOS下YUM升级PHP5.1到5.2.17教程
- linux下vi编辑器常用命令
- centos crontab 定时执行任务使用大全
- linux笔记 第七天 文件查找find命令、文件特殊权限、while和until循环
- Centos6.5 rpm方式指定目录安装JDK
- linux学习资料
- linux搭建git远程版本库
- Linux NFS服务器的安装与配置方法(图文详解)
- 使用Linux命令行测试网速-----speedtest-cli
- 批量建立linux机器之间的ssh互信的自动化脚本
- Linux(suse11) 安装 JDK (.gz版本)
- CentOS yum安装mcrypt详细图解教程
- mysql文件目录详解 LINUX
- linux特殊字符
- linux命令:ls
- linux eclipse中C++连接mysql数据库