gcc以及共享库

#include<stdio.h>
#include<math.h>
int main()
{

	double x = pow(2.0,3.0);
	printf("The cube of 2.0 = %f\n",x);
	return 0;
}
时间: 2024-10-29 03:04:18

gcc以及共享库的相关文章

关于linux下GCC生成共享库(动态链接库)的探究

下面列出了我在对共享库(动态链接库)编写以及使用时遇到的几个简单问题进行探究和解答: 参考文档:http://www.cnblogs.com/likwo/archive/2012/05/09/2492225.html 1.静态库.动态链接库.共享库有什么区别? 静态库(windows下为.lib,linux下为.a)是在程序编写前就编译到目标程序中了,而动态链接库(windows下为.dll)可以在程序执行的任何时候被动态加载.共享库(linux下为.so)是在程序启动的时候加载到程序中. 1)

Linux 下 GCC 编译共享库控制导出函数的方法

通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪些函数是 DLL 内部自己使用:而在 Linux 下不存在 dllexport 这样的指示字,默认情况下 GCC 编译 SO(共享库)时把代码中的所有函数都导出了,那么如何实现 Windows 下的那种效果,由我们自己来控制共享库导出函数呢? 其实在 Linux 下也有类似的控制机制.在 GCC 帮

第二课 GCC入门之静态库以及共享库

序言: 前面一课讲了gcc的简单入门,包括gcc编译步骤:预处理:编译:汇编:链接.今天这节课就来讲下linux的库也欢迎大家吐糟共同学习. 原理: linux系统中分为2种库:静态库和共享库.静态库是以.a后缀结尾的文件,通常是在编译的链接阶段指定静态库的位置进行编译生成可执行文件,因此生成的可执行文件在执行的时候不需要静态库的参与.动态库共享库是以.so后缀结尾的文件,通常情况下代码中有需要用到共享库的地方在编译链接阶段指定共享库的路径在执行可执行文件的时候从内存表中读取代码,内存中只有一份

linux C 动态共享库编译链接

  1.1.1         linux编写so文件的方式 1首先gcc编译的时候要加-fPIC选项,-fPIC是告诉gcc生成一个与位置无关的代码 2gcc链接的时候要加-shared选项,意思是生成一个so共享库. 对于linux或者unix,一个so文件,文件扩展名必须是so,文件名的前三个字母必须是lib 1.1.2         linux使用so gcc链接的时候需要加-L.代表从当前目录下找相关的so文件,-l文件名(但不包括文件名开头的lib和扩展名so) 例如编译一个mai

链接详解--共享库命名

按照共享库的命名惯例,每个共享库有三个文件名:real name,soname和linker name. soname是一个符号链接的名字,只包含共享库的主版本号,主版本号一致即可保证库函数的接口一致, 因此应用程序的.dynamic段只记录共享库的soname,只要soname一致,这个共享库就可以用. 使用共享库可以很方便地升级库文件而不需要重新编译应用程序,这是静态库没有的优点. 注:libc的版本号有一点特殊,libc-2.8.90.so的主版本号是6而不是2或2.8. linker n

Linux共享库.so文件的命名和动态链接

Linux中的.so文件 是动态链接的产物 共享库理解为提供各种功能函数的集合,对外提供标准的接口 Linux中命名系统中共享库的规则 主版本号:不同的版本号之间不兼容 次版本号:增量升级 向后兼容 发行版本号:对应次版本的错误修正和性能提升,不影响兼容性 Linux中的共享库并不都是这样的格式 比如GLibc的共享库命名为:libc-x.y.z.so 动态链接器也是GLibc的一部分,使用ld-x.y.z.so命名 libm(数学库)等 SO-NAME机制 系统和程序中要链接的共享库的格式一般

android开发调用c++共享库so文件

1.编写libaab.cpp #include <stdio.h>#include <stdlib.h> #ifdef __cplusplusextern "C" {#endif int go() { return 555; } #ifdef __cplusplus}#endif 运行g++命令编译得到libaab.so arm-linux-androideabi-g++.exe -I/usr/local/linux-androideabi/platforms/

Linux学习笔记——例说makefile 增加系统共享库

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [代码仓库]--makefile-example

c语言静态库与共享库的制作

/** * 此处的例子中所有的文件都在同一个目录下 * 若不在同一个路径下,请自行修改 **/ 静态库: 1> 编译源文件生成目标文件 gcc -c file1.c [file2.c ...]    //单文件注意文件名 2> 使用ar命令打包 ar -crv libxxx.a *.o        //库文件必须以lib开头,后缀为.a -c 创建 -v 显示过程 -r 插入文件 3> 使用静态库 方式一:将库文件当普通.o文件一样对待 gcc -o [execfilename] *.