【问题标题】:what is the difference between .o and .os objs in glibcglibc中的.o和.os objs有什么区别
【发布时间】:2013-04-26 23:43:38
【问题描述】:

我正在研究glibc的源代码。我在编译 glibc 时发现我得到了一些 .o obj 和一些 .os obj。例如,有 dl-load.o 和 dl-load.os。那么,它们之间有什么区别呢?

谢谢! 一鸣

【问题讨论】:

    标签: compilation glibc


    【解决方案1】:

    设置:glibc2.3.4

    实验

    首先,glibc/bld/close.{o,os} 上的 nm 表明只有 close.o 定义了 syscall_error。 然后,编写一个简单的程序,检测close()中是否使用了syscall_error

    #include <unistd.h>
    #include <stdio.h>
    int main() { 
        return close(fileno(stdin));
    }
    
    gcc -o s.out -static -g a.c
    gcc -o d.out -g a.c
    

    结果

    gdb 表明只有close() 中的s.out 使用syscall_error。因此.o 文件用于static library,而.os 用于dynamic library

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2013-08-11
      • 2010-12-29
      • 1970-01-01
      • 2012-11-28
      • 2013-05-07
      • 1970-01-01
      相关资源
      最近更新 更多