GCC生成动态库
main.c
#include <stdio.h>
void hello(void);
int main(int argc, char ** argv)
{
printf("This is main function!\n");
hello();
return ;
}
hello.c
#include <stdio.h>
void hello()
{
printf("This is hello function!\n");
}
-----------------------------------------------------------------------------------------------------------------------------------------
1:gcc -shared -fPIC -o libmyhello.so hello.c
把hello.c生成动态库。
-shared表示共享,用作动态库。
-fPIC position independent code表示位置无关代码,用于动态加载。
2:gcc -o myhello main.c -L. -lmyhello
-l'xxxx' 表示提取libxxxx.so库文件。如实例则表示libmyhello.so。
-L'path' 表示库文件的位置在path目录下。如实例则表示在当前目录 . 。
3:sudo cp libmyhello.so /usr/lib/
把动态库复制到linux默认库文件/usr/lib/下。
若想在任意库目录下生产可执行文件,去掉步骤2,用gcc -o myhello main.c ./libmyhello.so取代即可。
每次运行myhello 需要保证"./libmyhello.so"的存在,不推荐使用。
4:./myhello 提示:
This is main function!
This is hello function!
表示运行成功!
GCC生成动态库的更多相关文章
- 如何使用GCC生成动态库和静态库
根据链接时期的不同,库又有静态库和动态库之分.静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行.而动态库是在程序执行的时候被链接的.程序执行完,库仍需 ...
- 【C++】如何使用GCC生成动态库和静态库
一.静态库和动态库的定义及区别 程序编译的四个过程: 1.预处理 展开头文件/宏替换/去掉注释/条件编译(.i后缀) 2.编译 检查语法,生成汇编(.s后缀) 3.汇编 汇编代码转换成机 ...
- gcc 生成动态库时-fpic选项是什么意思。
-f后面跟一些编译选项,PIC是其中一种,表示生成位置无关代码(Position Independent Code)
- gcc编译工具生成动态库和静态库之一----介绍
1.库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. ...
- gcc编译工具生成动态库和静态库
一. 库的分类 1.1. 静态库(.a) 1.1.1. 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大.所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 1. ...
- Linux生成动态库系统
Linux生成动态库系统 一个.说明 Linux下动态库文件的扩展名为 ".so"(Shared Object). 依照约定,全部动态库文件名称的形式是libname.so(可能在 ...
- gcc 编译动态库和静态库
Linux C 编程入门之一:gcc 编译动态库和静态库 cheungmine 2012 参考: C程序编译过程浅析 http://blog.csdn.net/koudaidai/article/de ...
- Linux gcc链接动态库出错:LIBRARY_PATH和LD_LIBRARY_PATH的区别
昨天在自己的CentOs7.1上写makefile的时候,发现在一个C程序在编译并链接一个已生成好的lib动态库的时候出错.链接命令大概是这样的: [root@typecodes tcpmsg]# g ...
- Linux下编译tinyxml生成动态库
首先去到sourceforge下载tinyxml的源码,https://sourceforge.net/projects/tinyxml/?source=dlp,最新版本是2.6.2. 将下载成功的t ...
随机推荐
- centos7 PXE自动安装环境搭建
原理: 要进行自动安装的主机A,加电启动时以网卡为第一启动设备 1.启动时会向网络广播,找到dhcp服务器B请求分配IP地址信息,服务器B除了给其分配基本的IP信息(ip.netmask.getewa ...
- iOS Base64加密
1.Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节,则用0 ...
- react-native 使用 antd-mobile-rn UI进行开发app
1.创建 react-native 项目 react-native init app03 2.安装组件 npm install antd-mobile-rn --save 3.配置按需加载 npm i ...
- Linux中各种压缩文件
.gz格式 压缩: gzip 文件名 解压: gzip -d 欲解压文件名 gunzip 欲解压文件名 说明: 1.只能压缩文件,不能压缩目录 2.压缩和解压的时候不保留原文件 .bz2格式 压缩: ...
- LeetCode:完全平方数【279】【DP】
LeetCode:完全平方数[279][DP] 题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示 ...
- web框架详解之tornado 二 cookie
一.tornado之cookie一 目录: <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- OJ 之 FATE
- FATE Crawling in process... Crawling failed Time Limit:100 ...
- MongoDB分片搭建
环境 $ cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) $ uname -a Linux zhaopin-2-201 3.1 ...
- Qt版权介绍:GPL, LGPL 以及 Commercial 授权
http://blog.csdn.net/changsheng230/article/details/6167933 Qt版权介绍:GPL, LGPL 以及 Commercial 授权 分类: Qt ...
- Add Tags to Neutron Resources
给一个network加上tag,用来: Ability to map different networks in different OpenStack locations to one logica ...