Arquivos .o Linux

1. Arquivos .o Linux

Leonardo Eufrazio Nogueira
leoeufrazio

(usa LMDE)

Enviado em 18/07/2017 - 16:04h

Boa Tarde.Caso a categoria esteja errada,por favor,avisem-me qual a correta.
Arquivos .o,também conhecidos como "object",servem para que?
Eles são gerados somente quando eu estou trabalhando com bibliotecas?
Eles seriam um arquivo executável?


  


2. Re: Arquivos .o Linux

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 18/07/2017 - 17:58h

olha, aguarde mais respostas, pois não sou programador,

mas pelo que ví, os arquivos .o, objetos, não são legíveis.

são usados em C e C++ para compilar, por exemplo, módulos de kernel.

http://www.linuxforums.org/forum/kernel/14691-how-do-i-read-o-file.html
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.


3. Re: Arquivos .o Linux

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/07/2017 - 21:17h

Eu já dei uma cutucada nesta dúvida porque num outro tópico referiram-se a arquivos .o do tipo objetos como sendo bibliotecas.

O pessoal do tópico possui mais autoridade que eu sobre estas coisas, mas ninguém retornou. >< Fiquei na dúvida, porque era uma explicação alternativa de um treco que desde sempre eu dava como certo.

Eu sei o que é, aprendi na prática, vi como funciona, também perguntei muito tempo depois para um professor na faculdade, inclusive foi uma das poucas coisas que realmente aprendi durante a estadia na instituição (estou me excedendo).

Não sei explicar. Em todos estes anos nesta indústria vital, uma das primeiras coisas que aprendi, eu não sei explicar. Refiro-me a décadas. Não sei explicar.

As explicações da internet não explicam direito. Vou arriscar. Que apareça alguém a corrigir-me desta vez!

Arquivos objeto possuem referências a endereços de memória de onde seriam as variáveis usadas, como que uma conversão nome-endereço. Possuem referências a valores constantes, como strings, ints e floats declarados na construção do código. Possuem espaços organizados com os valores constantes declarados como arrays. Possuem a organização de instruções que apontam para outros trechos do código que a execução deve-se dirigir no fluxo. Possuem o indicativo de onde se deve inserir o verdadeiro código que realizará o que o programa se propõe a fazer.

Tem uma etapa da construção do binário chamada linkedição. Não sei explicar. O linkeditor resolve o que falta para ser um executável. Ele associa o programa com as verdadeiras bibliotecas, como libc e libmath. Há linkagem dinâmica, onde a biblioteca é consultada para ver o que será executado e há a linkagem estática, onde o conteúdo da biblioteca é inserido no programa final, de modo que ele seja mais independente.

Em Linux, bibliotecas costumam ter extensão .so e .a. Em Windows© você as chamaria de DLLs.

Um comando usado para ver que bibliotecas um executável, com sua respectiva saída, seria

$ ldd /bin/bash 
linux-vdso.so.1 (0x00007ffd13588000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007fe7d85d8000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe7d83d4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe7d8035000)
/lib64/ld-linux-x86-64.so.2 (0x000055834c7e8000)


Vou pensar um pouco numa coisa melhor para melhorar ou corrigir esta explicação. Veja se ela ajuda na pesquisa de alguma coisa no Google.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts