2013-05-02 1 views
1

Я изучаю исходный код glibc. Я обнаружил, что при компиляции glibc я получаю некоторые .o objs и некоторые .os objs. Например, существует dl-load.o, а также dl-load.os. Итак, в чем разница между ними?В чем разница между .o и .os objs в glibc

Спасибо! Имин

+1

'.os'? или '.so'? – twalberg

ответ

1

НАСТРОЙКИ: glibc2.3.4

ЭКСПЕРИМЕНТ

Во-первых, нм на glibc/bld/close.{o,os} показывает, что только close.o имеет определенную syscall_error. Затем напишите простую программу, чтобы определить, используется ли syscall_error в close().

#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.

Смежные вопросы