1. .o 是中间结果,对应每个.c文件,对每个.c文件进行到汇编阶段,不链接
  2. 好多个.o文件合在一起,构成一个.a文件
  3. .a文件时静态库,.so文件时动态库
  4. 使用ar(archiver)命令生成.a,ar rcs mylib.a f1.o f2.o
  5. 用gcc生成可执行代码时,使用-l参数指定要加入的库函数。也可以用ld命令的-l和-L参数
  6. lib+函数库名+.so+版本号信息(但是记住,非常底层的C库函数都不是以lib开头命名的)。例子:/usr/lib/libreadline.so.3
    a. 编译器编译的时候需要的函数库的名字就是不包含版本号信息的soname,例如上面的例子把最后的.3去掉就可以了
  7. 共享函数库文件必须放在特定目录,对于开放源码来说,GNU标准建议所有的函数库文件都放在/usr/local/lib目录下,而且建议命令、可执行程序都放在/usr/local/bin目录下。不过这个只是习惯啦,可以改变,具体的位置信息可以看/etc/ld.so.conf里面的配置信息。当然,也可以修改这个文件,加入自己的一些特殊的路径要求。

编译相关

  1. 编译的最小单元是.c文件,首先将.c文件编译成.o
  2. 使用-c选项可告诉编译器只进行汇编生成.o,而不进行链接
  3. -fPIC,生成动态库时使用,告诉编译器生成与位置无关的的代码。即符号的地址都是绝对地址。PIC,Position Independent Code。
  4. 如何找到新生成的动态库
    a) 把库拷贝到/usr/lib和/lib下
    b) LD_LIBRARY_PATH环境变量加上库的位置
    c) 修改/etc/ld.so.conf文件,把库所在的路径加到文件末尾(直接写在文件末尾,不要在路径前加include),并执行ldconfig刷新(ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.)。这样,加入的目录下的所有库文件都可见

Linux的.a、.so和.o文件相关推荐

  1. linux ls 命令 路径,使用ls命令在Linux中使用完整路径列出文件

    许多人会发现,这是重复的问题,但我已经经历了所有问题,然后问及这个主题,但没有为我工作.使用ls命令在Linux中使用完整路径列出文件 我想打印使用ls命令的特定文件格式的完整路径名到目前为止,我发现 ...

  2. Linux socket 网络编程 常用头文件

    一 三种类型的套接字: 1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务.数据被看作是字节流,无长度限制.例如FTP协议就采用这种. 2.数据报式套接字(SOCKET_D ...

  3. linux sed 批量替换多个文件中的字符串

    原文: http://blog.csdn.net/kauu/article/details/1757325 一.linux sed 批量替换多个文件中的字符串 sed -i "s/oldst ...

  4. linux中使用scp远程拷贝文件及文件夹

    linux中使用scp远程拷贝文件及文件夹 linux scp远程拷贝文件及文件夹,需要的朋友可以参考下 1.拷贝本机/home/wtf/test整个目录至远程主机192.168.100.1的/roo ...

  5. Linux下如何生成core dump 文件(解决segment fault段错误的问题)

    Linux下如何生成core dump 文件(解决segment fault段错误的问题) 参考文章: (1)Linux下如何生成core dump 文件(解决segment fault段错误的问题) ...

  6. 分享Kali Linux 2017年第二周镜像文件

    分享Kali Linux 2017年第二周镜像文件 Kali Linux官方于1月10日发布2017年的第2周镜像.这也是从去年12月11日后,第一次周更新.这次更新保持以往规律,仍然是11个镜像文件 ...

  7. windows主机用scp命令向Linux服务器上传和下载文件

    windows主机用scp命令向Linux服务器上传和下载文件 文章目录: 一.scp介绍 二.scp上传和下载 1.上传 2.下载 三.scp的更多参数 一.scp介绍 scp是secure cop ...

  8. Linux中如何用命令打开文件夹

    Linux中如何用命令打开文件夹 文章目录: 一.点击Linux桌面文件图标打不开 二.解决方式 三.杀死所有nautilus相关进程 你是否遇到过Linux桌面文件图标打不开,我就遇到过,此时我的眼 ...

  9. linux中rm删除的文件是否可以恢复,Linux下用rm删除的文件的恢复方法

    Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2008-08/14744.htm lin ...

  10. Linux 中如何复制和删除文件夹中的所有文件?

    Linux 中如何复制和删除文件夹中的所有文件? 1.复制文件 目标文件目录必须存在 (1) 直接复制 cp /hone/user/temp/test.c /home/user/ (2) 复制并重命名 ...

最新文章

  1. 在ubuntu上安装wireshark之后提示Couldn't run /usr/bin/dumpcap in child process:权限不够
  2. Java打印整数的二进制表示(代码与解析)
  3. 央行“意外“降息 专家称贷款买房者首先受益
  4. 如何使用API提交转码任务?
  5. 一款简单实用的桌面电子邮件客户端
  6. 商汤校招 | 春笋计划”
  7. python fromarray_python --- 之pil image.fromarray
  8. 网络数据包收发流程:从驱动到协议栈
  9. 如何elf文件转换为asm汇编文件
  10. duilib加载资源
  11. 产出投入表结构类型的介绍
  12. 职场001 什么时候跳槽
  13. 创建 DBLink 的方法
  14. 安装hadoop集群模拟大数据集群踩到的坑(一)
  15. 【调剂】东北石油大学计算机科学与技术专业接收调剂
  16. 惠州 菜鸟机器人_菜鸟智能配送机器人小G上岗 一次能装10多个包裹
  17. 【iOS】——暑假第二周3Gshare总结
  18. ZooKeeper的十二连问,你顶得了嘛,Java自学宝典电子书下载
  19. 调用高德地图Api,查询地名经纬度
  20. 【verilog学习12】HDLBits:Procedures (Always block/case+Avoiding latches)

热门文章

  1. 解决MongoDB安装提示权限不足
  2. layui显示分页,搜索后重置分页
  3. javaweb登录验证码的实现
  4. Oracle怎么安装
  5. wappush系统框架
  6. 分布式飞机机电综合系统半实物验证环境ETest
  7. 太牛了!华为天才少年稚晖君又自制硬萌机器人,代码开源了
  8. FCM 模糊C均值聚类算法
  9. 续航越级!真我GT Neo5 SE震撼发布,1999元起售
  10. Zephyr (nrf)