Conteúdo Objetivo deste documento Escrever uma biblioteca Vamos escrever um código simples para a biblioteca AddNumbers que permite armazenar e adicionar dois inteiros. É composto de arquivos de interface e de origem. Criar uma biblioteca estática Primeiro, o arquivo de origem src / AddNumbers. cpp é convertido em um arquivo de objeto. Uma biblioteca estática é basicamente um conjunto de arquivos objeto que foram copiados em um único arquivo. Ele é criado invocando o arquivo ar. O nome da biblioteca deve começar com as três letras lib e ter o sufixo. a. Você também pode escrever regras semelhantes em um makefile. Veja o arquivo Makefile. static dado no arquivo AddNumbers. tar. bz2. Criar uma biblioteca compartilhada A opção - fpic diz ao g para criar um código independente de posição que é necessário para bibliotecas compartilhadas. Finalmente, a biblioteca compartilhada é criada. Observe que o nome da biblioteca deve começar com as três letras lib e ter o sufixo. so. Como um exemplo makefile veja o arquivo Makefile. shared dado no arquivo AddNumbers. tar. bz2. Símbolos C Os comandos nm e cfilt permitem listar e desmembrar símbolos C a partir de arquivos de objeto. Vamos tentar esses comandos com a biblioteca estática libAddNumbers. a. Isso significa que a biblioteca libAddNumbers. a foi criada com o arquivo de objeto AddNumbers. o que contém alguns símbolos. A primeira coluna é o valor do símbolo (representa a posição do símbolo na biblioteca). A segunda coluna é o tipo de símbolo. E a terceira coluna é o nome do símbolo. Consulte a tabela a seguir que descreve alguns tipos de símbolos comuns. O símbolo é um símbolo fraco que não foi especificamente marcado como um símbolo de objeto fraco. Quando um símbolo fraco definido é ligado com um símbolo definido normal, o símbolo definido normal é usado sem erro. Quando um símbolo indefinido fraco está ligado e o símbolo não está definido, o valor do símbolo é determinado de uma forma específica do sistema sem erro. Maiúsculas indica que um valor padrão foi especificado. O tipo de símbolo é desconhecido. Ou formato de arquivo de objeto específico. Consulte o manual nm para mais detalhes. Os símbolos não são humanos compreensíveis. É com o fato de linguagem C fornece sobrecarga de função, o que significa que você pode escrever muitas funções com o mesmo nome (desde que cada um leva parâmetros de diferentes tipos). Todos os nomes de função C são codificados em um rótulo de montagem de baixo nível (este processo é conhecido como mangling). O programa cfilt faz o mapeamento inverso: ele decodifica (processo de demagamento) nomes de baixo nível em nomes de nível de usuário. O programa nm permite desmembrar diretamente símbolos usando a opção - C. Usando bibliotecas Esta seção descreve como usar bibliotecas estáticas ou compartilhadas em programas. Primeiro, precisamos criar um programa principal. Para vincular esse programa com a biblioteca estática, escreva o seguinte comando que compila e vincula o executável principal. Observe que as três primeiras lib letras, bem como o sufixo. a não são especificados para o nome da biblioteca. Agora o programa AddNumbersClientstatic pode ser executado. Para vincular a biblioteca compartilhada, digite o seguinte comando. As primeiras três letras lib, bem como o sufixo. so não são especificados para o nome da biblioteca. Para executar o programa AddNumbersClientshared, você precisa informar à variável de ambiente LDLIBRARYPATH onde encontrou a biblioteca compartilhada. No mundo real é melhor usar um caminho absoluto para LDLIBRARYPATH. Como makefile exemplos ver Makefile. static e Makefile. shared arquivos fornecidos no arquivo AddNumbersClient. tar. bz2. Lista de bibliotecas compartilhadas O comando ldd imprime as bibliotecas compartilhadas requeridas por cada programa ou biblioteca compartilhada especificada na linha de comando. Opções úteis de ar O programa GNU ar cria, modifica e extrai arquivos. Um arquivo é um único arquivo que contém uma coleção de outros arquivos em uma estrutura que torna possível recuperar os arquivos individuais originais (chamados membros do arquivo). O filescontents original, modo (permissões), timestamp, proprietário e grupo são preservados no arquivo e podem ser restaurados na extração. Opções úteis de nm Links úteis
Comments
Post a Comment