Importando Arquivos de Objeto Wavefront (OBJ) A geometria importada de arquivos OBJ aparece no 3ds Max como malha editável ou objetos poli editáveis. A importação de materiais e mapas associados é suportada. Observação Quando você importa um arquivo OBJ, arrastando e soltando. Por padrão o importador não exibe a caixa de diálogo OBJ Import Options. Para ver a caixa de diálogo, mantenha pressionada a tecla Ctrl enquanto arrasta e solta. Para importar um arquivo OBJ: A caixa de diálogo Selecionar arquivo para importação é aberta. Escolha um arquivo OBJ para abrir e clique em Abrir. A caixa de diálogo do importador será aberta. Escolha os objetos a serem importados e defina os parâmetros de importação. Para obter detalhes, consulte a seção Interface, a seguir. Clique em Import. Durante a importação, é exibida uma caixa de diálogo mostrando o progresso e os nomes dos objetos importados. Se ocorrer um conflito de nome, será aberta uma caixa de diálogo que lhe dará a oportunidade de ignorar ou renomear o objeto. Ícones de LED para Opções O diálogo indica quais recursos estão no arquivo OBJ por meio de ícones vermelhos e verdes que parecem LEDs. Esse recurso está presente no arquivo OBJ. Este recurso não está presente no arquivo OBJ. Exclui a cena atual da memória antes de importar o arquivo OBJ. O importador prefixa qualquer texto inserido aqui para o nome de cada objeto importado. Importar como única malha Quando ativado, o importador combina o conteúdo do arquivo OBJ em um único objeto de malha editável e atribui ao objeto o mesmo nome do arquivo (sem a extensão de nome de arquivo). Por exemplo, se você importar como uma única malha um arquivo chamado windowparts. obj. Todos os objetos separados no arquivo OBJ são combinados em um único objeto de malha editável chamado windowparts. Importar como Editable Poly Quando ativado, importa a geometria Wavefront como objetos Poly editáveis em vez de objetos Editable Mesh. Defaultoff. Quando ativado, garante que os polígonos importados são triangulares, como nas superfícies polivalentes editáveis. Isso pode ser útil quando você importa malhas de um programa de modelagem que não garante polígonos triangulares. Defaulton. Aviso Retriangulate Os polígonos podem alterar a ordem dos vértices, portanto, quando essa opção estiver ativada, a exportação de uma malha de volta ao formato OBJ não coincidirá exatamente com a malha original. Algumas aplicações, como Mudbox e ZBrush. Dependem da ordem dos vértices: se você estiver trabalhando com um desses, certifique-se de desativar Polígonos Retriangulados. Dica Quando você importa e exporta arquivos OBJ usados com um aplicativo específico, use predefinições para garantir consistência. Logo acima da lista de objetos no arquivo, aparecendo como campos somente leitura, estão o nome do arquivo OBJ eo número total de faces no arquivo. Os objetos no arquivo OBJ importado aparecem nesta lista de rolagem. Cada entrada consiste em um nome de objeto eo número de faces no objeto, além de uma caixa de seleção à esquerda do nome do objeto para habilitar e desabilitar a importação por objeto. Por padrão, importação é habilitado para todos os objetos no arquivo. Para alternar a importação de um objeto individual, clique em sua caixa de seleção na lista. Você também pode usar os controles na parte inferior da lista para ativar e desativar a importação (veja a seguir). Utilize estes botões para modificar o estado das caixas de verificação de activação / desactivação de importação. Todos ativa todos os objetos da lista Nenhum desabilita todos os objetos Inverter inverte o estado de cada caixa de seleção. Digite frases de busca com caracteres curinga no campo de texto editável à direita do botão Inverter para habilitar somente objetos que satisfaçam os critérios de pesquisa. Por exemplo, para ativar todos os itens da lista cujos nomes começam com Esfera, insira sph. Você também pode usar o caractere de pesquisa padrão. Para representar um único caractere. Por exemplo, para ativar todos os nomes de quatro caracteres começando com caixa, use a caixa de seqüência de pesquisa. Quando ativado, transfere todos os valores do eixo Y para o eixo Z e vice-versa. Use isso ao importar de Poser e outros programas que usam Y como o eixo vertical e Z como o eixo de profundidade. Posiciona o pivô de cada objeto importado em seu centro. Quando desligado, os pivôs são posicionados no centro do mundo: (0,0,0). Permite a importação de splines. Quando ativado, as coordenadas de textura são carregadas a partir do arquivo importado, se presente, e associadas à geometria. Quando ativado, as informações sobre transições de cores entre grupos são carregadas. Consulte Visualização e alteração da suavização. Esses controles afetam como as normais são importadas (ou geradas, se necessário). Importar do arquivo (O padrão.) Importa as normais usadas no arquivo OBJ. Se o arquivo OBJ não tiver normais, gera padrões usando os grupos de suavização importados. Se o arquivo OBJ não especificar grupos de suavização, gera padrões atribuindo todas as faces que suavizam o grupo 1. Do grupo SM Gera padrões de grupos de suavização importados. Se o arquivo OBJ não especificar grupos de suavização ou desativar Grupos de Suavização de Geometria, gera padrões atribuindo todas as faces ao grupo de suavização 1. Auto Smooth Gera grupos de suavização com base no ângulo entre faces. Valor O ângulo de limite para gerar grupos de suavização: se o ângulo entre duas faces for menor que este valor, ambos são atribuídos ao mesmo grupo de suavização. Se o ângulo for maior que este valor, as duas faces são atribuídas a grupos de alisamento separados. Default30.0. Faceted Todas as faces são atribuídas ao grupo de suavização 0: ou seja, não é aplicada nenhuma suavização ea malha importada tem uma aparência facetada. Flip Normals Volta o normal de todos os rostos importados. Não importa se os normais são importados ou gerados. Esta opção é principalmente para uso quando você está importando um modelo que aparece de dentro para fora se você não virar os normais. Esses modelos geralmente resultam quando a geometria é exportada por uma aplicação diferente de Maya ou 3ds Max. Ativar para ativar a conversão de unidade. Defaultoff. Unidades do modelo Escolha a unidade a ser usada ao importar o modelo. Na maioria das vezes, você irá definir isso para a unidade usada no arquivo original OBJ. Quando Converso está desativado, determina o dimensionamento para o conteúdo do arquivo OBJ na importação. O valor padrão de 1,0 significa que não há escalonamento é executado. Cor do fio original Determina as cores do wireframe atribuídas ao importar vários objetos sem materiais. Quando ativado, cada objeto é atribuído a uma cor wireframe diferente. Quando desligado, cada objeto é atribuído a mesma cor wireframe, escolhido aleatoriamente. Quando ativado, importa materiais do arquivo MTL associado ao arquivo OBJ. Defaulton. Quando desativado, os controles restantes neste grupo são desativados. Prepends o texto indicado para o nome de cada material importado. Introduza o prefixo no campo de texto editável à direita da caixa de verificação Prefixo. O valor padrão de bump mapeia se o valor não for especificado no arquivo MTL. Force black ambient Define o componente Ambient dos materiais importados como preto. Importar para o Mat-Editor Traz materiais importados para o Material Editor. Se isso estiver desativado no momento da importação e depois quiser editar um material, você precisará usar o Get Material primeiro. Mostrar mapas no viewport Ativa o Show Map No Viewport para materiais importados Mapas difusos. Copiar mapas para a pasta do projeto Quando ativado, copia os mapas usados pelo arquivo OBJ para a subpasta scenassetsimages da pasta atual do projeto 3ds Max. Defaultoff. Sobregravar imagens quando copiar mapas para a pasta de projeto está ativada, ativar essa opção faz com que os mapas do arquivo OBJ substituam imagens existentes com nomes duplicados. Defaultoff. Quando a opção Copiar Mapas está ativada, mas esta opção está desativada, o 3ds Max exibe os nomes dos mapas que não copiou. Gravar log em Importar pasta Salva um arquivo de log na mesma pasta que o arquivo OBJ ao importar via script. Ao importar de um aplicativo específico, escolha esse aplicativo na lista suspensa. Os pré-ajustes incluem todas as configurações de exportação, incluindo geometria e materiais. Clique para abrir uma caixa de diálogo que permite editar as predefinições. Para alterar o caminho do mapa para uma predefinição, edite manualmente a configuração do caminho do mapa ou clique no botão da pasta no lado direito da linha e navegue até o novo caminho. Enquanto a caixa de diálogo Predefinições está aberta, você pode escolher uma predefinição clicando em seu nome (os destaques da linha) e clicando em OK. AVOptions Estruturas de dados Descrição detalhada AVOptions fornece um sistema genérico para declarar opções em estruturas arbitrárias (objetos). Uma opção pode ter um texto de ajuda, um tipo e um intervalo de valores possíveis. As opções podem então ser enumeradas, lidas e escritas para. Esta seção descreve como adicionar recursos AVOptions a uma struct. Todas as informações relacionadas AVOptions são armazenadas em uma AVClass. Portanto, o primeiro membro da estrutura deve ser um ponteiro para um AVClass descrevê-lo. O campo de opção da AVClass deve ser definido como uma matriz estática NULL-terminado de AVOptions. Cada AVOption deve ter um nome não vazio, um tipo, um valor padrão e para AVOptions do tipo de número também um intervalo de valores permitidos. Ele também deve declarar um deslocamento em bytes desde o início da estrutura, onde o campo associado a esta AVOption está localizado. Outros campos na estrutura AVOption também devem ser definidos quando aplicável, mas não são necessários. O exemplo a seguir ilustra uma estrutura habilitada para AVOptions: Em seguida, ao alocar sua estrutura, você deve garantir que o ponteiro AVClass esteja definido para o valor correto. Em seguida, avoptsetdefaults () pode ser chamado para inicializar padrões. Depois disso, a estrutura está pronta para ser usada com a API AVOptions. Ao limpar, você pode usar a função avoptfree () para liberar automaticamente todas as opções de string e binário alocadas. Continuando com o exemplo acima: Pode acontecer que uma estrutura habilitada para AVOptions contenha outra estrutura habilitada para AVOptions como membro (por exemplo, AVCodecContext em libavcodec exporte opções genéricas, enquanto seu campo privdata exporta opções específicas de codec). Nesse caso, é possível configurar a estrutura pai para exportar as opções childs. Para fazer isso, basta implementar AVClass. childnext () e AVClass. childclassnext () no pai Estruturas AVClass. Assumindo que os testes de cima agora também contém um campo childstruct: Colocar childnext () e childclassnext () como definido acima em testclass agora tornará childstructs opções acessíveis através de teststruct (novamente, a instalação adequada como descrito acima precisa ser feito em childstruct logo após Ele é criado). Do exemplo acima pode não estar claro por que tanto childnext () quanto childclassnext () são necessários. A distinção é que childnext () itera sobre objetos realmente existentes, enquanto childclassnext () itera sobre todas as possíveis classes filho. Por exemplo. Se um AVCodecContext foi inicializado para usar um codec que tenha opções privadas, então seu childnext () retornará AVCodecContext. privdata e terminará iterating. O OTOH childclassnext () no AVCodecContext. avclass itera sobre todos os codecs disponíveis com opções privadas. É possível criar constantes nomeadas para as opções. Basta definir o campo de unidade da opção que as constantes devem aplicar a uma seqüência de caracteres e criar as próprias constantes como opções de tipo AVOPTTYPECONST com seu campo de unidade definido para a mesma seqüência de caracteres. Seu campo defaultval deve conter o valor da constante nomeada. Por exemplo, para adicionar algumas constantes nomeadas para a opção testflags acima, coloque o seguinte na matriz childopts: Esta seção trata de acessar opções em uma estrutura habilitada para AVOptions. Tais estruturas em FFmpeg são e. AVCodecContext em libavcodec ou AVFormatContext em libavformat. As funções básicas para examinar as opções são avoptnext (). Que itera sobre todas as opções definidas para um objeto, e avoptfind (). Que procura uma opção com o nome fornecido. A situação é mais complicada com o assentamento. Uma estrutura habilitada para AVOptions pode ter filhos habilitados para AVOptions. Passar a bandeira AVOPTSEARCHCHILDREN para avoptfind () fará com que a função procure as crianças recursivamente. Para enumerar há basicamente dois casos. O primeiro é quando você deseja obter todas as opções que possam existir potencialmente na estrutura e seus filhos (por exemplo, ao construir a documentação). Nesse caso, você deve chamar avoptchildclassnext () recursivamente sobre o pai estruturas AVClass. O segundo caso é quando você tem uma estrutura já inicializada com todos os seus filhos e você deseja obter todas as opções que podem ser realmente escritas ou ler a partir dele. Nesse caso, você deve chamar avoptchildnext () recursivamente (e avoptnext () em cada resultado). Ao definir opções, você geralmente tem uma seqüência de caracteres lida diretamente do usuário. Em tal caso, basta passar para avoptset () é suficiente. Para opções de tipo não-string, avoptset () analisará a string de acordo com o tipo de opção. Da mesma forma avoptget () irá ler qualquer tipo de opção e convertê-lo para uma seqüência de caracteres que será retornado. Não esqueça que a string é alocada, então você tem que liberá-lo com avfree (). Em alguns casos, pode ser mais conveniente para colocar todas as opções em um AVDictionary e chamar avoptsetdict () sobre ele. Um caso específico disso é o formato / codec aberto funções em lavf / lavc que levam um dicionário preenchido com a opção como um parâmetro. Isto permite definir algumas opções que não podem ser definidas de outro modo, p. Ex. O formato de arquivo de entrada não é conhecido antes do arquivo é realmente aberto. Definir Documentação define AVOPTSEARCHCHILDREN 0x0001 O valor a ser definido. Se o campo não é de um tipo string, então a string dada é analisada. Correcções SI e alguns escalares nomeados são suportados. Se o campo é de um tipo numérico, ele tem que ser um escalar numérico ou nomeado. Comportamento com mais de um escalar e - infix operadores é indefinido. Se o campo é de um tipo de sinalizadores, ele tem que ser uma seqüência de escalares numéricos ou de sinalizadores nomeados separados por ou -. Prefixing um sinalizador com faz com que ele seja definido sem afetar as outras sinalizações de forma semelhante, - desabilita um sinalizador. Se non-NULL colocar aqui um ponteiro para o AVOption foundThe gnu objcopy utilitário copia o conteúdo de um arquivo de objeto para outro. Objcopy usa o gnu bfd Library para ler e escrever os arquivos de objeto. Ele pode gravar o arquivo de objeto de destino em um formato diferente do arquivo de objeto de origem. O comportamento exato do objcopy é controlado por opções de linha de comando. Observe que objcopy deve ser capaz de copiar um arquivo totalmente vinculado entre dois formatos. No entanto, copiar um arquivo de objeto relocável entre dois formatos qualquer pode não funcionar conforme o esperado. Objcopy cria arquivos temporários para fazer suas traduções e exclui-los depois. Objcopy usa bfd para fazer todo o seu trabalho de tradução tem acesso a todos os formatos descritos no bfd e assim é capaz de reconhecer a maioria dos formatos sem ser explicitamente explicado. Veja BFD. Objcopy pode ser usado para gerar S-registros usando um alvo de saída de srec (por exemplo, use - O srec). Objcopy pode ser usado para gerar um arquivo binário bruto usando um destino de saída de binário (por exemplo, use - O binário). Quando objcopy gera um arquivo binário bruto, ele produzirá essencialmente um despejo de memória do conteúdo do arquivo de objeto de entrada. Todos os símbolos e informações de realocação serão descartados. O despejo de memória será iniciado no endereço de carga da seção mais baixa copiado para o arquivo de saída. Ao gerar um registro S ou um arquivo binário não processado, pode ser útil usar - S para remover seções que contêm informações de depuração. Em alguns casos - R será útil para remover seções que contêm informações que não são necessárias pelo arquivo binário. Notemdash objcopy não é capaz de alterar o endianness de seus arquivos de entrada. Se o formato de entrada tiver um endianness (alguns formatos não), objcopy só pode copiar as entradas em formatos de arquivo que têm a mesma endianness ou que não têm endianness (por exemplo, srec). (No entanto, consulte a opção --reverse-bytes.) Infile outfile Os arquivos de entrada e saída, respectivamente. Se você não especificar outfile. Objcopy cria um arquivo temporário e renomeia destrutivamente o resultado com o nome de infile. - I bfdname --input-target bfdname Considere o formato de objeto de arquivos de origem como bfdname. Ao invés de tentar deduzi-lo. Consulte Seleção de alvos. Para maiores informações. - O bfdname --output-target bfdname Escreve o arquivo de saída usando o formato de objeto bfdname. Consulte Seleção de alvos. Para maiores informações. - F bfdname --target bfdname Use bfdname como o formato de objeto para o arquivo de entrada e de saída, ou seja, basta transferir dados de origem para destino sem tradução. Consulte Seleção de alvos. Para maiores informações. - b bfdarch --binary-architecture bfdarch Útil quando se transforma um arquivo de entrada sem arquitetura em um arquivo de objeto. Nesse caso, a arquitetura de saída pode ser definida como bfdarch. Esta opção será ignorada se o arquivo de entrada tiver um bfdarch conhecido. Você pode acessar esses dados binários dentro de um programa fazendo referência aos símbolos especiais criados pelo processo de conversão. Esses símbolos são chamados binário objfile início, binário objfile final e binário objfile tamanho. por exemplo. Você pode transformar um arquivo de imagem em um arquivo de objeto e, em seguida, acessá-lo em seu código usando esses símbolos. - j sectionpattern --only-section sectionpattern Copie somente as seções indicadas do arquivo de entrada para o arquivo de saída. Esta opção pode ser dada mais de uma vez. Observe que usar esta opção de forma inadequada pode tornar o arquivo de saída inutilizável. Os caracteres curinga são aceitos no sectionpattern. - R sectionpattern --remove-section sectionpattern Remove qualquer seção correspondente sectionpattern do arquivo de saída. Esta opção pode ser dada mais de uma vez. Observe que usar esta opção de forma inadequada pode tornar o arquivo de saída inutilizável. Os caracteres curinga são aceitos no sectionpattern. Usando ambas as opções - j e - R juntos resulta em comportamento indefinido. - S --strip-all Não copie as informações de relocação e símbolo do arquivo de origem. - g --strip-debug Não copie símbolos ou seções de depuração do arquivo de origem. --strip-unneeded Tira todos os símbolos que não são necessários para o processamento de realocação. - K symbolname --keep-symbol symbolname Ao remover símbolos, mantenha o símbolo symbolname mesmo que normalmente seja removido. Esta opção pode ser dada mais de uma vez. - N symbolname --strip-symbol symbolname Não copie o símbolo symbolname do arquivo de origem. Esta opção pode ser dada mais de uma vez. --strip-unneeded-symbol symbolname Não copie o símbolo symbolname do arquivo de origem a menos que seja necessário por uma relocação. Esta opção pode ser dada mais de uma vez. - G symbolname --keep-global-symbol symbolname Mantém apenas o símbolo symbolname global. Tornar todos os outros símbolos locais para o arquivo, para que eles não são visíveis externamente. Esta opção pode ser dada mais de uma vez. --localize-hidden Em um objeto ELF, marque todos os símbolos que possuem visibilidade interna ou oculta como local. Esta opção aplica-se em cima de opções de localização específicas de símbolo, como - L. - L symbolname --localize-symbol symbolname Faça o símbolo symbolname local para o arquivo, para que ele não fique visível externamente. Esta opção pode ser dada mais de uma vez. - W symbolname --weaken-symbol symbolname Faça o símbolo symbolname fraco. Esta opção pode ser dada mais de uma vez. --globalize-symbol symbolname Atribui um nome de símbolo symbolo global scoping para que fique visível fora do arquivo no qual ele está definido. Esta opção pode ser dada mais de uma vez. - w --wildcard Permitir expressões regulares em symbolname s usadas em outras opções de linha de comando. Os operadores ponto de interrogação (), asterisco (), barra invertida () e colchetes () podem ser usados em qualquer lugar no nome do símbolo. Se o primeiro caractere do nome do símbolo é o ponto de exclamação (), então o sentido do comutador é invertido para esse símbolo. Por exemplo: faria objcopy enfraquecer todos os símbolos que começam com ldquofordquo exceto para o símbolo ldquofoordquo. - x --discard-all Não copie símbolos não globais do arquivo de origem. - X --discard-locals Não copie os símbolos locais gerados pelo compilador. (Estes geralmente começam com L ou ...) - b byte --byte byte Se a intercalação tiver sido activada através da opção --interleave, então inicie o intervalo de bytes para manter no byte byte. Byte pode estar na faixa de 0 a largura -1, onde largura é o valor dado pela opção --interleave. - i largura - largura entrelaçada Copiar apenas um intervalo de cada bytes de largura. (Os dados do cabeçalho não são afetados). Selecione qual byte no intervalo começa a cópia com a opção --byte. Selecione a largura do intervalo com a opção --interleave-width. Esta opção é útil para criar arquivos para programar a ROM. É tipicamente usado com um alvo de saída srec. Observe que objcopy se queixará se você não especificar a opção --byte também. A largura de entrelaçamento padrão é 4, portanto com --byte definido como 0, objcopy copiaria o primeiro byte de cada quatro bytes da entrada para a saída. --interleave-width width Quando usado com a opção --interleave, copie os bytes de largura por vez. O início do intervalo de bytes a ser copiado é definido pela opção --byte ea extensão do intervalo é definida com a opção --interleave. O valor padrão dessa opção é 1. O valor de largura mais o valor de byte definido pela opção --byte não deve exceder a amplitude de intercalação definida pela opção --interleave. Esta opção pode ser usada para criar imagens para dois flashes de 16 bits intercalados em um barramento de 32 bits passando - b 0 - i 4 --interleave-width2 e - b 2 - i 4 --interleave-width2 para dois comandos objcopy . Se a entrada era 12345678, então as saídas seriam 1256 e 3478 respectivamente. - p --preserve-dates Defina as datas de acesso e de modificação do arquivo de saída como sendo as mesmas do arquivo de entrada. - D --enable-deterministic-archives Funciona em modo determinístico. Ao copiar membros do arquivo e gravar o índice de arquivo, use zero para UIDs, GIDs, timestamps e use modos de arquivo consistentes para todos os arquivos. Se binutils foi configurado com --enable-deterministic-archives. Então este modo está ativado por padrão. Ele pode ser desabilitado com a opção - U, abaixo. - U --disable-deterministic-archives Não funciona no modo determinístico. Este é o inverso da opção - D, acima: ao copiar membros do arquivo e gravar o índice de arquivo, use seus valores atuais de UID, GID, timestamp e arquivo. Este é o padrão, a menos que binutils tenha sido configurado com --enable-deterministic-archives. --debugging Converta as informações de depuração, se possível. Este não é o padrão porque somente determinados formatos de depuração são suportados eo processo de conversão pode levar muito tempo. --gap-fill val Preencha lacunas entre seções com val. Esta operação aplica-se ao endereço de carga (LMA) das secções. É feito aumentando o tamanho da seção com o endereço mais baixo, e preenchendo o espaço extra criado com val. --pad-to address Pad o arquivo de saída até o endereço de endereço de carga. Isso é feito aumentando o tamanho da última seção. O espaço extra é preenchido com o valor especificado por --gap-fill (default zero). --set-start val Define o endereço de início do novo arquivo para val. Nem todos os formatos de arquivo de objeto oferecem suporte para definir o endereço de início. --change-start incr --adjust-start incr Alterar o endereço inicial adicionando incr. Nem todos os formatos de arquivo de objeto oferecem suporte para definir o endereço de início. --change-addresses incr --adjust-vma incr Alterar os endereços VMA e LMA de todas as seções, bem como o endereço inicial, adicionando incr. Alguns formatos de arquivo de objeto não permitem que os endereços de seção sejam alterados arbitrariamente. Observe que isso não realocar as seções se o programa espera seções para ser carregado em um determinado endereço, e essa opção é usada para alterar as seções de modo que eles são carregados em um endereço diferente, o programa pode falhar. --change-section-address seção val val --adjust-section-vma sectionpattern val Defina ou altere tanto o endereço VMA eo endereço LMA de qualquer seção correspondente a sectionpattern. Se for usado, o endereço da seção será definido como val. Caso contrário, val é adicionado ou subtraído do endereço da seção. Veja os comentários em --change-addresses. acima. Se sectionpattern não corresponder a nenhuma seção do arquivo de entrada, um aviso será emitido, a menos que --no-change-warnings seja usado. --change-section-lma sectionpattern val Defina ou altere o endereço LMA de quaisquer seções que correspondam a sectionpattern. O endereço LMA é o endereço onde a seção será carregada na memória durante o tempo de carregamento do programa. Normalmente, este é o mesmo que o endereço VMA, que é o endereço da seção no tempo de execução do programa, mas em alguns sistemas, especialmente aqueles onde um programa é mantido em ROM, os dois podem ser diferentes. Se for usado, o endereço da seção será definido como val. Caso contrário, val é adicionado ou subtraído do endereço da seção. Veja os comentários em --change-addresses. acima. Se sectionpattern não corresponder a nenhuma seção do arquivo de entrada, um aviso será emitido, a menos que --no-change-warnings seja usado. --change-section-vma sectionpattern val Defina ou altere o endereço VMA de qualquer secção que corresponda a secção. O endereço VMA é o endereço onde a seção será localizada uma vez que o programa tenha começado a ser executado. Normalmente, este é o mesmo que o endereço LMA, que é o endereço onde a seção será carregada na memória, mas em alguns sistemas, especialmente aqueles onde um programa é mantido em ROM, os dois podem ser diferentes. Se for usado, o endereço da seção será definido como val. Caso contrário, val é adicionado ou subtraído do endereço da seção. Veja os comentários em --change-addresses. acima. Se sectionpattern não corresponder a nenhuma seção do arquivo de entrada, um aviso será emitido, a menos que --no-change-warnings seja usado. --change-warnings --adjust-warnings Se --change-section-address ou --change-section-lma ou --change-section-vma for usado, eo padrão de seção não corresponde a nenhuma seção, emita um aviso . Esse é o padrão. --no-change-warnings --no-adjust-warnings Não emita um aviso se --change-section-address ou --adjust-section-lma ou --adjust-section-vma for usado, mesmo se a seção Padrão não corresponde a nenhuma seção. --set-section-flags sectionpattern flags Defina as flags para quaisquer seções que correspondam a sectionpattern. O argumento flags é uma seqüência de caracteres separados por vírgulas. Os nomes reconhecidos são alloc, contents, load, noload, readonly, código, data, rom, share e debug. Você pode definir o sinalizador de conteúdo para uma seção que não tem conteúdo, mas não é significativo para limpar o sinalizador de conteúdo de uma seção que tem contentsndashjust remover a seção em vez disso. Nem todas as bandeiras são significativas para todos os formatos de arquivo de objeto. --add-section sectionname filename Adicione uma nova seção chamada sectionname enquanto copia o arquivo. O conteúdo da nova seção é retirado do arquivo nome do arquivo. O tamanho da seção será o tamanho do arquivo. Esta opção só funciona em formatos de arquivo que podem suportar seções com nomes arbitrários. Nota - pode ser necessário usar a opção --set-section-flags para definir os atributos da seção recém-criada. --dump-section sectionname nome_de_arquivo Coloque o conteúdo da seção nomeado sectionname no nome do arquivo. Sobrescrevendo qualquer conteúdo que possa ter estado lá anteriormente. Esta opção é o inverso de --add-section. Esta opção é semelhante à opção --only-section, exceto que não cria um arquivo formatado, apenas despeja o conteúdo como dados binários brutos, sem aplicar quaisquer deslocalizações. A opção pode ser especificada mais de uma vez. --update-section sectionname filename Substitua o conteúdo existente de uma seção denominada sectionname pelo conteúdo do arquivo filename. O tamanho da seção será ajustado para o tamanho do arquivo. Os sinalizadores de seção para sectionname permanecerão inalterados. Para arquivos em formato ELF, a seção de mapeamento de segmentos também permanecerá inalterada, algo que não é possível usando --remove-section seguido por --add-section. A opção pode ser especificada mais de uma vez. Nota - é possível usar --rename-section e --update-section para atualizar e renomear uma seção de uma linha de comando. Nesse caso, passe o nome da seção original para --update-section. E os nomes da seção original e nova para --rename-section. --add-symbol name section: value, flags Adicione um novo nome chamado name ao copiar o arquivo. Esta opção pode ser especificada várias vezes. Se a seção é dada, o símbolo será associado com e em relação a essa seção, caso contrário, será um símbolo ABS. Especificar uma seção indefinida resultará em um erro fatal. Não há nenhuma verificação para o valor, ele será tomado como especificado. Sinalizadores de símbolo podem ser especificados e nem todos os sinalizadores serão significativos para todos os formatos de arquivo de objeto. Por padrão, o símbolo será global. A bandeira especial before othersym irá inserir o novo símbolo na frente do othersym especificado. Caso contrário, o (s) símbolo (s) serão adicionados no final da tabela de símbolos na ordem em que aparecem. --nome-section oldname newname, flags Renomeia uma seção de oldname para newname. Opcionalmente alterando os sinalizadores de seções para sinalizadores no processo. Isso tem a vantagem sobre usng um script linker para executar o renomear em que a saída permanece como um arquivo de objeto e não se tornar um executável vinculado. Essa opção é particularmente útil quando o formato de entrada é binário, pois isso sempre criará uma seção chamada. data. Se, por exemplo, você quisesse criar uma seção chamada. rodata contendo dados binários, você poderia usar a seguinte linha de comando para alcançá-la: --long-section-names Controla o tratamento de longos nomes de seção ao processar COFF e PE-COFF objeto Formatos. O comportamento padrão, keep, é preservar nomes de seção longos se houver algum presente no arquivo de entrada. As opções de ativar e desativar ativar ou desativar forçosamente o uso de nomes de seção longos no objeto de saída quando desativado estiverem em vigor, todos os nomes de seção longos no objeto de entrada serão truncados. A opção de ativação só irá emitir nomes de seção longos se houver algum presente nas entradas, este é basicamente o mesmo que keep, mas é deixado indefinido se a opção enable pode forçar a criação de uma tabela de string vazia no arquivo de saída. --change-leading-char Alguns formatos de arquivo de objeto usam caracteres especiais no início dos símbolos. O caractere mais comum é o sublinhado, que os compiladores costumam adicionar antes de cada símbolo. Esta opção informa objcopy para alterar o caractere principal de cada símbolo quando ele converte entre formatos de arquivo de objeto. Se os formatos de arquivo de objeto usarem o mesmo caractere principal, essa opção não terá efeito. Caso contrário, ele irá adicionar um caractere, ou remover um caractere, ou alterar um caractere, conforme apropriado. --remove-leading-char Se o primeiro caractere de um símbolo global for um caractere principal de símbolo especial usado pelo formato de arquivo de objeto, remova o caractere. O símbolo mais comum é o sublinhado. Esta opção removerá um sublinhado principal de todos os símbolos globais. Isso pode ser útil se você deseja vincular objetos de diferentes formatos de arquivo com diferentes convenções para nomes de símbolos. Isso é diferente de --change-leading-char porque sempre altera o nome do símbolo quando apropriado, independentemente do formato do arquivo de objeto do arquivo de saída. --reverse-bytes num Inverter os bytes em uma seção com conteúdo de saída. Um comprimento de seção deve ser igualmente divisível pelo valor dado para que o swap possa ser realizado. A inversão ocorre antes da intercalação ser realizada. Essa opção é usada normalmente na geração de imagens de ROM para sistemas de destino problemáticos. Por exemplo, em algumas placas de destino, as palavras de 32 bits obtidas a partir de ROMs de 8 bits são re-montadas em ordem de bytes little-endian independentemente da ordem de byte da CPU. Dependendo do modelo de programação, o endianness da ROM pode precisar ser modificado. Consider a simple file with a section containing the following eight bytes: 12345678. Using --reverse-bytes2 for the above example, the bytes in the output file would be ordered 21436587. Using --reverse-bytes4 for the above example, the bytes in the output file would be ordered 43218765. By using --reverse-bytes2 for the above example, followed by --reverse-bytes4 on the output file, the bytes in the second output file would be ordered 34127856. --srec-len ival Meaningful only for srec output. Set the maximum length of the Srecords being produced to ival. This length covers both address, data and crc fields. --srec-forceS3 Meaningful only for srec output. Avoid generation of S1/S2 records, creating S3-only record format. --redefine-sym old new Change the name of a symbol old. to new. This can be useful when one is trying link two things together for which you have no source, and there are name collisions. --redefine-syms filename Apply --redefine-sym to each symbol pair old new listed in the file filename. filename is simply a flat file, with one symbol pair per line. Line comments may be introduced by the hash character. This option may be given more than once. --weaken Change all global symbols in the file to be weak. This can be useful when building an object which will be linked against other objects using the - R option to the linker. This option is only effective when using an object file format which supports weak symbols. --keep-symbols filename Apply --keep-symbol option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once. --strip-symbols filename Apply --strip-symbol option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once. --strip-unneeded-symbols filename Apply --strip-unneeded-symbol option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once. --keep-global-symbols filename Apply --keep-global-symbol option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once. --localize-symbols filename Apply --localize-symbol option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once. --globalize-symbols filename Apply --globalize-symbol option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once. --weaken-symbols filename Apply --weaken-symbol option to each symbol listed in the file filename. filename is simply a flat file, with one symbol name per line. Line comments may be introduced by the hash character. This option may be given more than once. --alt-machine-code index If the output architecture has alternate machine codes, use the index th code instead of the default one. This is useful in case a machine is assigned an official code and the tool-chain adopts the new code, but other applications still depend on the original code being used. For ELF based architectures if the index alternative does not exist then the value is treated as an absolute number to be stored in the emachine field of the ELF header. --writable-text Mark the output text as writable. This option isnt meaningful for all object file formats. --readonly-text Make the output text write protected. This option isnt meaningful for all object file formats. --pure Mark the output file as demand paged. This option isnt meaningful for all object file formats. --impure Mark the output file as impure. This option isnt meaningful for all object file formats. --prefix-symbols string Prefix all symbols in the output file with string. --prefix-sections string Prefix all section names in the output file with string. --prefix-alloc-sections string Prefix all the names of all allocated sections in the output file with string. --add-gnu-debuglink path-to-file Creates a. gnudebuglink section which contains a reference to path-to-file and adds it to the output file. Note: the file at path-to-file must exist. Part of the process of adding the. gnudebuglink section involves embedding a checksum of the contents of the debug info file into the section. If the debug info file is built in one location but it is going to be installed at a later time into a different location then do not use the path to the installed location. The --add-gnu-debuglink option will fail because the installed file does not exist yet. Instead put the debug info file in the current directory and use the --add-gnu-debuglink option without any directory components, like this: At debug time the debugger will attempt to look for the separate debug info file in a set of known locations. The exact set of these locations varies depending upon the distribution being used, but it typically includes: The same directory as the executable. A sub-directory of the directory containing the executable called. debug A global debug directory such as /usr/lib/debug. As long as the debug info file has been installed into one of these locations before the debugger is run everything should work correctly. --keep-file-symbols When stripping a file, perhaps with --strip-debug or --strip-unneeded. retain any symbols specifying source file names, which would otherwise get stripped. --only-keep-debug Strip a file, removing contents of any sections that would not be stripped by --strip-debug and leaving the debugging sections intact. In ELF files, this preserves all note sections in the output. Note - the section headers of the stripped sections are preserved, including their sizes, but the contents of the section are discarded. The section headers are preserved so that other tools can match up the debuginfo file with the real executable, even if that executable has been relocated to a different address space. The intention is that this option will be used in conjunction with --add-gnu-debuglink to create a two part executable. One a stripped binary which will occupy less space in RAM and in a distribution and the second a debugging information file which is only needed if debugging abilities are required. The suggested procedure to create these files is as follows: Link the executable as normal. Assuming that is is called foo then. Run objcopy --only-keep-debug foo foo. dbg to create a file containing the debugging info. Run objcopy --strip-debug foo to create a stripped executable. Run objcopy --add-gnu-debuglinkfoo. dbg foo to add a link to the debugging info into the stripped executable. Notemdashthe choice of. dbg as an extension for the debug info file is arbitrary. Also the --only-keep-debug step is optional. You could instead do this: Link the executable as normal. Copy foo to foo. full Run objcopy --strip-debug foo Run objcopy --add-gnu-debuglinkfoo. full foo i. e. the file pointed to by the --add-gnu-debuglink can be the full executable. It does not have to be a file created by the --only-keep-debug switch. Notemdashthis switch is only intended for use on fully linked files. It does not make sense to use it on object files where the debugging information may be incomplete. Besides the gnudebuglink feature currently only supports the presence of one filename containing debugging information, not multiple filenames on a one-per-object-file basis. --strip-dwo Remove the contents of all DWARF. dwo sections, leaving the remaining debugging sections and all symbols intact. This option is intended for use by the compiler as part of the - gsplit-dwarf option, which splits debug information between the. o file and a separate. dwo file. The compiler generates all debug information in the same file, then uses the --extract-dwo option to copy the. dwo sections to the. dwo file, then the --strip-dwo option to remove those sections from the original. o file. --extract-dwo Extract the contents of all DWARF. dwo sections. See the --strip-dwo option for more information. --file-alignment num Specify the file alignment. Sections in the file will always begin at file offsets which are multiples of this number. This defaults to 512. This option is specific to PE targets. --heap reserve --heap reserve. commit Specify the number of bytes of memory to reserve (and optionally commit) to be used as heap for this program. This option is specific to PE targets. --image-base value Use value as the base address of your program or dll. This is the lowest memory location that will be used when your program or dll is loaded. To reduce the need to relocate and improve performance of your dlls, each should have a unique base address and not overlap any other dlls. The default is 0x400000 for executables, and 0x10000000 for dlls. This option is specific to PE targets. --section-alignment num Sets the section alignment. Sections in memory will always begin at addresses which are a multiple of this number. Defaults to 0x1000. This option is specific to PE targets. --stack reserve --stack reserve. commit Specify the number of bytes of memory to reserve (and optionally commit) to be used as stack for this program. This option is specific to PE targets. --subsystem which --subsystem which. major --subsystem which. major. minor Specifies the subsystem under which your program will execute. The legal values for which are native. windows. console. posix. efi-app. efi-bsd. efi-rtd. sal-rtd. and xbox. You may optionally set the subsystem version also. Numeric values are also accepted for which. This option is specific to PE targets. --extract-symbol Keep the files section flags and symbols but remove all section data. Specifically, the option: removes the contents of all sections sets the size of every section to zero and sets the files start address to zero. This option is used to build a. sym file for a VxWorks kernel. It can also be a useful way of reducing the size of a --just-symbols linker input file. --compress-debug-sections Compress DWARF debug sections using zlib with SHFCOMPRESSED from the ELF ABI. Note - if compression would actually make a section larger . then it is not compressed. --compress-debug-sectionsnone --compress-debug-sectionszlib --compress-debug-sectionszlib-gnu --compress-debug-sectionszlib-gabi For ELF files, these options control how DWARF debug sections are compressed. --compress-debug-sectionsnone is equivalent to --decompress-debug-sections. --compress-debug-sectionszlib and --compress-debug-sectionszlib-gabi are equivalent to --compress-debug-sections. --compress-debug-sectionszlib-gnu compresses DWARF debug sections using zlib. The debug sections are renamed to begin with. zdebug instead of. debug . Note - if compression would actually make a section larger . then it is not compressed nor renamed. --decompress-debug-sections Decompress DWARF debug sections using zlib. The original section names of the compressed sections are restored. --elf-stt-commonyes --elf-stt-commonno For ELF files, these options control whether common symbols should be converted to the STTCOMMON or STTOBJECT type. --elf-stt-commonyes converts common symbol type to STTCOMMON. --elf-stt-commonno converts common symbol type to STTOBJECT. - V --version Show the version number of objcopy. - v --verbose Verbose output: list all object files modified. In the case of archives, objcopy - V lists all members of the archive. --help Show a summary of the options to objcopy. --info Display a list showing all architectures and object formats available.
No comments:
Post a Comment