`
61party
  • 浏览: 1053964 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

【总结】Linux下C开发,怎么做成库文件,又怎么引用这个库文件?

 
阅读更多

本文根据http://topic.csdn.net/u/20091026/10/0e913e37-e4a2-4504-bcc7-61af18a22dde.html?6487的回复总结而成。

1. 共享库

通常做成共享库的话,在编绎时加上-shared参数,并把链接生成的文件名命名libxxx.so,可以放在/usr/lib下

其他程序引用这个库时,在链接的时候加上-lxxx就可以了。

编辑好代码以后,编译时采用类似下面的命令可生成"共享库"(假如源文件是myfun.c):
gcc -shared -fPIC -Wmyfun.c -0 libmy.so
解释: -shared 生成共享库;
-fIPC 表示“位置无关代码”(Position Independent Code),可不加;
-W 表示输出警告信息,可不加;
库文件的命名要按照libxxxx.so的格式;

要引用这个库时:
gcc xxx.c -0 xxx.out -lmy
-l 表示设定要连接的库(libmy.so,输my便可)

2.静态库

文件名:lib.c
先编译成目标文件 gcc -o mylib.o -c lib.c
然后创建静态库,将mylib.o放到libmylib.a中 ar rcs libmylib.a mylib.o
最后copy到库目录下/usr/lib cp libmylib.a /usr/lib/libmylib.a

在编写的时候直接调用其中的函数就是了,只不过在编译的时候要加入-l选项后面跟上库名
如 gcc -o test test.c -lmylib //mylib是前面创建的库的名称

3. 动态库

创建就是 gcc -fPIC -share -o mylib.so lib.c
调用也分两种方法
一种方法是 gcc -o test test.c ./libmylib.so (注意这里跟的是动态库的路径 )
第二种方法是使用动态库的函数 你man dlopen看下那几个函数看下就知道了就不多说了

分享到:
评论

相关推荐

    linux下读写INI配置文件库

    1.linux下INI配置文件读写操作库 ======================================================================== if(false) SET(CMAKE_SYSTEM_NAME Linux) set(CMAKE_C_COMPILER "/home/swapp/arm/5.4.0/bin/arm-...

    Linux下C语言应用编程

    Linux下C语言应用编程》深入浅出地讲解了Linux下C应用程序开发所需的基本工具、知识和技巧,主要包括:开发工具的使用和技巧、文件I/O编程、多进程编程、进程间通信、多线程编程、网络编程等内容。可以让读者轻松、...

    linux c 读写二进制文件

    main2.cpp 生成1个二进制文件。 main3.c 读取二进制文件。 用fgets可以读取指定长度的字符串。 可用于读取格式化固定位址的二进制结构数据。

    linux下开发,连接mysql数据库头文件和库文件(32位和64位)

    linux下开发,连接mysql数据库时候用到的头文件和库文件,32位和64位的都有,直接解压根据系统选择32位还是64位,把mysql_include和mysql_lib两个文件夹复制到主文件同级目录,然后makefile里面这样编译gcc -I./...

    linux下文件管理系统的研究与实现

    Linux操作系统是现在流行的一种免费的操作系统,它完全符合POSIX标准,拥有强大的网络功能和良好的可移植性,系统的开发就是基于这个平台。为了用户操作的方便,系统用QT来实现系统的用户界面,它 是一个跨平台的 ...

    Linux串口开发及共享库调用例程

    先在命令行运行make编译,生成串口读写共享库,然后运行gcc -s -shared -fPIC test.c -lSetupSerialPort -o test.so,编译串口...还有Linux下多线程Stocket通讯例程和firefox插件开发例程,有空整理一下贡献给大家了

    Linux下C语言编程教程

    Linux下C语言编程入门教程 目录 第一章基础知识 ……………………………………………………………………………4 第二章进程介绍 …………………………………………………………………………10 第三章文件操作 ...

    Linux环境C语言调用Mplayer实现音乐播放器(其中缺少了一个FIFO管道文件)

    C语言字符串处理、Linux系统编程、多进程、多线程、进程间通信、线程同步、实现的功能有暂停、快进、快退、显示歌词、单曲循环、列表循环、随机播放、声音调节等

    gtk库文件以及linuxc

    linux c 的开发 与程序的开发!对于开发所需要的库文件

    Linux C程序设计王者归来Part1

    资深程序员15年开发经验的总结,全面、深入剖析Linux环境C程序设计的精髓  涵盖Linux C编程基础、开发环境、进程操作、文件操作、网路编程和Shell编程  视频教学:专门录制了16.8小时高清配套教学视频,赠送7小时...

    Linux下C开发汇总资料

    Linux下C开发,包括GDB、GCC、linux常用命令、make文件、vi使用。

    操作系统课程设计——Linux二级文件系统设计

    使用文件来模拟外存,进行数据结构设计和操作算法的设计,实现一个文件系统并实现基本的文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容)。要求: 1、对程序的每一部分...

    嵌入式Linux应用程序开发详解(完整版)

    2.3 Linux系统服务 2.4 实验内容 本章小结 思考与练习 第3章 Linux下的C编程基础 3.1 Linux下 C语言编程概述 3.2 进入Vi 3.3 初探Emacs 3.4 Gcc编译器 3.5 Gdb调试器 3.6 Make工程管理器 3.7 ...

    基于Linux C语言的多核并行卷积神经网络库源码

    项目概述:这是一个基于Linux平台,采用纯C语言开发的多核并行卷积神经网络库。该库包含32个文件,其中C源文件10个,头文件6个,Shell脚本4个,以及其他必要的配置文件和图像文件。该库特色在于其高效的多核并行处理...

    嵌入式Linux应用开发教程-第二章嵌入式linux-C语言开发工具新(与“文件”相关共75张).pptx

    嵌入式Linux应用开发教程-第二章嵌入式linux-C语言开发工具新(与“文件”相关共75张).pptx

    黑色经典系列之嵌入式linux应用程序开发详解

    一共12章,包括图形编程 ...第3章 Linux下的C编程基础 3.1 Linux下C语言编程概述 3.2 进入Vi 3.3 初探Emacs 3.4 Gcc编译器 ..................................... ...................................

    delphi编写so库,及调用实例,linux下运行,Deepin系统

    delphi编写so库,及调用实例,linux下运行,Deepin系统

    精通ARM嵌入式Linux系统开发1

    在嵌入式Linux软件开发中讲述了嵌入式Linux C语言开发工具的使用、标准库的使用、多任务开发基础和设备驱动开发基础;在嵌入式应用系统实例分析中讲述了嵌入式Linux的网络程序开发、MiniGUI图形界面开发、CAN总线...

    C语言移植mp4v2库将h264流保存为mp4文件

    基于富瀚6630平台移植mp4v2库将h264流保存为mp4文件

Global site tag (gtag.js) - Google Analytics