正文

作为一个多年的C程序员,反复接触到后缀为lo的文件,其实一直没有太搞明白(其实是没有太理会),这次做一个总结。

参考这里:

The ‘.lo’ file is a library object, which may be built into a shared library, and the ‘.o’ file is a standard object file

The .lo file is the libtool object, which Libtool uses to determine what object file may be built into a shared library

这里说明,.lo文件是libtool生成的文件,被libtool用来生成共享库的;而.o 文件是标准的目标文件。

Shared libraries, however, may only be built from position-independent code (PIC). So, special flags must be passed to the compiler to tell it to generate PIC rather than the standard position-dependent code.

Since this is a library implementation detail, libtool hides the complexity of PIC compiler flags by using separate library object files (which end in ‘.lo’ instead of ‘.o’). On systems without shared libraries (or without special PIC compiler flags), these library object files are identical to “standard” object files.

这里说明,原来的共享库是编自PIC(position-independent code,位置无关)的代码,这是一个实现的细节,libtool隐藏了PIC的flag的复杂性,而采用了分离的库对象文件,以“.lo”代替“.o”结尾。在不需要共享库的系统上,这些库文件等同于标准的目标文件(即.o文件)。

参考

https://stackoverflow.com/questions/5895649/difference-between-a-o-and-lo-file
http://www.delorie.com/gnu/docs/libtool/libtool_8.html

C语言下“.lo”和“.o”的区别相关推荐

  1. 【笔试题】C语言结构体中,不同的数据类型在32位和64位下所占字节的区别

    题目 如下C程序,在64位处理器上运行后sz的值是什么? struct st {int *p;int i;char a; }; int sz=sizeof(struct st); 答案 16 解析 考 ...

  2. 强类型语言和静态类型语言有什么区别?

    另外,一方是否意味着另一方? #1楼 强类型意味着类型之间的转换之间存在限制. 静态类型意味着类型不是动态的 - 一旦创建变量,就无法更改变量的类型. #2楼 这经常被误解,所以让我澄清一下. 静态/ ...

  3. run在java_Java语言start和run方法的区别

    Java语言start和run方法的区别 导语:Thread类定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法.那么它和start方法有什么不同呢?让我们了解一下吧! 调用start ...

  4. C语言 vprintf 函数和 printf 函数区别 - C语言零基础入门教程

    目录 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明 2.vprintf 函数声明 二.vprintf 函数和 printf 函数使用 三.猜你喜欢 零基础 C/C ...

  5. C语言 #include <> 与 #include “” 区别 - C语言零基础入门教程

    目录 一.什么是头文件 二.#include <> 三.#include "" 四.#include <> 与 #include "" ...

  6. c语言中栈堆,全程剖析C语言中堆和栈的区别

    C语言中堆和栈的区别 1.申请方式 (1)栈(satck):由系统自动分配.例如,声明在函数中一个局部变量int b;系统自动在栈中为b开辟空间. (2)堆(heap):需程序员自己申请(调用mall ...

  7. linux中fopen和open的区别,Linux下open与fopen的区别

    int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下: O_RDONLY      ...

  8. c语言程序中函数调用本身叫什么,在C语言中函数调用方式有什么区别

    在使用VC进行函数定义时,通常会指定该函数调用方式,那么在C语言中函数调用方式有什么区别呢?下面小编找到了一下教程,分享给大家,希望可以帮助到大家. 通常在使用VC进行函数定义时会指定该函数调用方式, ...

  9. c语言scanf与gets区别,C语言 scanf()和gets()函数的区别

    C语言 scanf()和gets()函数的区别 1.相同点:scanf( )函数和gets( )函数都可用于输入字符串 2.不同点:两者在功能上有所区别,具体区别如下: 要实现如下需求"从控 ...

最新文章

  1. 成田机场坐access到品川_关西机场交通攻略
  2. 如何在Vim中用换行符替换字符
  3. 机器学习笔记(二)模型评估与选择
  4. aosp 为什么某些目录没有编译_编译Android AOSP代码
  5. JSP中获取HTML中的中文内容是乱码的解决方法---开发中遇到的问题
  6. su的时候密码认证失败的解决方法
  7. 算法题目——二次函数三分求极值(HDU-3714)
  8. excel vba 如何将日期周几转换成文字_这5个超实用的Excel技巧,让你的办公效率更高...
  9. java制作扫雷游戏中埋雷的难点_月薪30K程序员花了一个小时,用c++做出经典扫雷游戏 !...
  10. [教程]Tensorflow + win10 + CPU + Python3.6+ 安装教程
  11. Eight Queens UVa 750
  12. 无线桥接和中继模式的区别
  13. 细数我曾经看过的动画片(不完全统计)
  14. maven仓库如何加载瀚高数据库JDBC驱动
  15. 硬件设计4---什么是电感、磁珠?
  16. 端午节用Python教你画绿豆糕
  17. java se和java_Java SE 9非常适合灵活,可扩展和无服务器的未来
  18. 利用 CSS3 实现僵尸行走动画
  19. C# 操作Excel数据透视表详解 – 创建、操作和删除
  20. 基址寻址与变址寻址的个人理解

热门文章

  1. 中文语法纠错论文解读(一)
  2. PAT Queueing at Bank(字符串处理)
  3. TokyoCabinet:tch数据库的文件管理工具tchmgr
  4. BNU 看风景 27585
  5. 非现场执法管理计算机(工业级),非现场执法管理系统研究及应用
  6. IT人物之搜狗公司COO茹立云 听学霸分享成长故事
  7. 读懂 TS 中联合类型和交叉类型的含义
  8. YYYY-MM-DD 的黑锅,我们不背!
  9. UDA:Unsupervised Data Augmentation for Consistency Training
  10. Lawliet|C语言学习笔记3——顺序结构