动态库和静态库

来源:互联网 发布:重庆房地产数据 编辑:程序博客网 时间:2024/06/06 08:53

      当我们完成的代码需要向外展示内容,又不想别人看到自己的源代码的时候,我们可以通过动态库,在给出头文件过后,别人就可以使用这个代码的时候,无从获知自己的代码,从而保证自己的代码的所有权。

       动态库:代码编译生成一个".so"的文件,当需要执行的时候,系统把这个".so"文件加载到内存中去,从而我们可以节省硬盘空间,库放在/lib,/usr/lib下,头文件放在/usr/include下。

       静态库:静态库在linux下名为libxx.a,静态函数库编译成的文件比较大,因为整个函数库的所有数据都被整合进目标代码中,静态链接的程序不用动态库就可以直接执行,而动态链接的必须要动态库才能执行。

       当我们编写完成代码过后,我们通过"gcc *.c -static"来静态编译,然后我们可以看到生成的可执行文件a.out的大小比我们不通过静态编译生成的文件的大小要大很多。

       静态库的制作:

       gcc -c  *.c   当我们需要通过gcc 把.c的文件编译生成.o的文件,过后ar -rcs 把所有的.o文件打包生成一个libxx.a的文件。当别人需要用到自己的代码时,我们就可以给他这个静态库的文件,且他还不知道我们的源代码。

        动态库的制作:

     gcc -shared -fpic -o  我们把*.c的文件打包生成一个libxx.so的文件

      

原创粉丝点击