Fazer statically linkedin binário opções


Objetivo deste documento Escrever uma biblioteca Vamos escrever um código simples para a biblioteca AddNumbers que permitem armazenar e adicionar dois inteiros. Ele é composto de arquivos de interface e fonte. Criar uma biblioteca estática Primeiro, o arquivo de origem srcAddNumbers. 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 objetos. 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 marcado especificamente 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 é ligado e o símbolo não é 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 desmonte) 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 associar este programa à biblioteca estática, escreva o seguinte comando que compila e vincula o executável principal. Observe que as três primeiras letras lib, 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 a 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 de 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 úteisconfigure - Configurar a árvore de origem O script de configuração configura a árvore de origem para compilar e instalar o Servidor HTTP Apache em sua plataforma específica. Várias opções permitem a compilação de um servidor correspondente às suas necessidades pessoais. Este script, incluído no diretório raiz da distribuição de origem, é para compilação somente em sistemas Unix e Unix. Para outras plataformas, consulte a documentação da plataforma. Você deve chamar o script configure a partir do diretório raiz da distribuição..configure OPTION. VAR VALUE. Para atribuir variáveis ​​de ambiente (por exemplo, CC. CFLAGS.), Especifique-as como VAR VALUE. Veja abaixo as descrições de algumas das variáveis ​​úteis. As opções a seguir influenciam o comportamento do próprio configure. - C --config-cache Este é um alias para --cache-fileconfig. cache --cache-file FILE Os resultados do teste serão armazenados em cache no arquivo FILE. Esta opção está desativada por padrão. - h --help shortrecursive Saída a ajuda e sair. Com o argumento short, somente as opções específicas para este pacote serão exibidas. O argumento recursivo exibe a ajuda curta de todos os pacotes incluídos. - n --no-create O script de configuração é executado normalmente, mas não cria arquivos de saída. Isso é útil para verificar os resultados do teste antes de gerar makefiles para compilação. - q --quiet Não imprime a verificação. Durante o processo de configuração. --srcdir DIR Define o diretório DIR como o diretório do arquivo de origem. O padrão é o diretório onde o configure está localizado, ou o diretório pai. --silent Igual a --quiet - V --version Exibe as informações de copyright e sai. Essas opções definem o diretório de instalação. A árvore de instalação depende do layout selecionado. --prefix PREFIX Instala arquivos independentes da arquitetura em PREFIX. Por padrão, o diretório de instalação é definido como usrlocalapache2. --exec-prefix EPREFIX Instale arquivos dependentes da arquitetura em EPREFIX. Por padrão, o diretório de instalação é definido para o diretório PREFIX. Por padrão, make install instalará todos os arquivos em usrlocalapache2bin. Usrlocalapache2lib etc. Você pode especificar um prefixo de instalação diferente de usrlocalapache2 usando --prefix. Por exemplo --prefixHOME. --enable-layout LAYOUT Configure o código-fonte e crie scripts para assumir uma árvore de instalação baseada no layout LAYOUT. Isso permite especificar separadamente os locais para cada tipo de arquivo dentro da instalação do Servidor HTTP Apache. O arquivo config. layout contém várias configurações de exemplo e você também pode criar sua própria configuração personalizada seguindo os exemplos. Os diferentes layouts neste arquivo são agrupados em ltLayout FOOgt. LtLayoutgt seções e referido por nome como em FOO. O layout padrão é Apache. Para um melhor controle dos diretórios de instalação, use as opções abaixo. Observe que os padrões de diretório são definidos pelo autoconf e são substituídos pela configuração de layout correspondente. --bindir DIR Instalar executáveis ​​do usuário no DIR. Os executáveis ​​do usuário estão suportando programas como htpasswd. Dbmmanage. Etc, que são úteis para os administradores do site. Por padrão DIR é definido como EPREFIX bin. --datadir DIR Instale dados independentes da arquitetura somente leitura no DIR. Por padrão, datadir é definido como PREFIX share. Esta opção é oferecida pelo autoconf e atualmente não é utilizada. --includedir DIR Instale os arquivos de cabeçalho C no diretório. Por padrão, includedir é definido como EPREFIX include. --infodir DIR Instalar a documentação de informações no DIR. Por padrão, infodir é definido como PREFIX info. Esta opção não está actualmente utilizada. --libdir DIR Instalar bibliotecas de código objeto em DIR. Por padrão libdir é definido como EPREFIX lib. --libexecdir DIR Instale os executáveis ​​do programa (isto é, módulos compartilhados) no DIR. Por padrão libexecdir é definido como módulos EPREFIX. --localstatedir DIR Instalar dados modificáveis ​​de máquina única no DIR. Por padrão localstatedir é definido como PREFIX var. Esta opção é oferecida pelo autoconf e atualmente não é utilizada. --mandir DIR Instale a documentação man no diretório. Por padrão, o mandir é definido como EPREFIX man. --oldincludedir DIR Instale arquivos de cabeçalho C para non-gcc no DIR. Por padrão oldincludedir é definido como usrinclude. Esta opção é oferecida pelo autoconf e atualmente não é utilizada. --sbindir DIR Instale os executáveis ​​do administrador do sistema no DIR. Esses são programas de servidor como o httpd. Apachectl. Suexec. Etc, que são necessários para executar o Apache HTTP Server. Por padrão, sbindir é definido como EPREFIX sbin. --sharedstatedir DIR Instalar dados modificáveis ​​independente da arquitetura no DIR. Por padrão, sharedstatedir é definido como PREFIX com. Esta opção é oferecida pelo autoconf e atualmente não é utilizada. --sysconfdir DIR Instale dados de máquina única de leitura como os arquivos de configuração do servidor httpd. conf. Mime. types. Etc em DIR. Por padrão sysconfdir é definido como PREFIX conf. Essas opções são usadas para compilar o Servidor HTTP Apache para executar em outro sistema. Em casos normais, ao criar e executar o servidor no mesmo sistema, essas opções não são usadas. --build BUILD Define o tipo de sistema do sistema no qual as ferramentas estão sendo construídas. Ele assume como padrão o resultado do script config. guess. --host HOST Define o tipo de sistema do sistema no qual o servidor será executado. HOST padrão é BUILD. --target TARGET Configurar para construir compiladores para o tipo de sistema TARGET. O padrão é HOST. Esta opção é oferecida pelo autoconf e não é necessária para o Apache HTTP Server. Essas opções são usadas para ajustar os recursos que o servidor HTTP terá. Geralmente, você pode usar a seguinte sintaxe para ativar ou desativar um recurso: --disable - FEATURE Não incluir FEATURE. Este é o mesmo que --enable - FEATURE no. --enable - FEATURE ARG Incluir FEATURE. O valor padrão para ARG é sim. --enable - MODULE shared O módulo correspondente será construído como módulo DSO. Por padrão habilitado módulos são vinculados dinamicamente. --enable - MODULE static O módulo correspondente será ligado estaticamente. Configure não vai reclamar sobre --enable - foo mesmo se foo não existe, então você precisa digitar com cuidado. A maioria dos módulos é compilada por padrão e tem que ser desativada explicitamente ou usando a palavra-chave poucos (veja --enable-modules.-enable-mods-shared e - enable-mods-static abaixo para mais explicações) ou --enable - m�ulos n� devem ser removidos como um grupo. Outros módulos não são compilados por padrão e precisam ser ativados explicitamente ou usando as palavras-chave all ou reallyall para estar disponível. Para descobrir quais módulos são compilados por padrão, execute. configure - h ou. configure --help e procure Recursos Opcionais. Suponha que você esteja interessado em modexample1 e modexample2. E você vê isso: Então modexample1 é habilitado por padrão, e você usaria --disable-example1 para não compilá-lo. Modexample2 está desativado por padrão, e você usaria --enable-example2 para compilá-lo. Módulos de multiprocessamento. Ou MPMs, implementar o comportamento básico do servidor. Um único MPM deve estar ativo para que o servidor funcione. A lista de MPMs disponíveis aparece na página de índice do módulo. Os MPMs podem ser construídos como DSOs para carregamento dinâmico ou estaticamente vinculados ao servidor e são habilitados usando as seguintes opções: Escolha o MPM padrão para o servidor. Se os MPMs forem construídos como módulos DSO (consulte --enable-mpms-shared), esta diretiva seleciona o MPM que será carregado no arquivo de configuração padrão. Caso contrário, esta diretiva seleciona o único MPM disponível, que será vinculado estaticamente ao servidor. Se esta opção for omitida, o MPM padrão para seu sistema operacional será usado. Habilite uma lista de MPMs como módulos compartilhados dinâmicos. Um desses módulos deve ser carregado dinamicamente usando a diretiva LoadModule. MPM-LIST é uma lista separada por espaços de nomes MPM entre aspas. Por exemplo: Além disso, você pode usar a palavra-chave especial all. Que selecionará todos os MPMs que suportem o carregamento dinâmico na plataforma atual e os construam como módulos DSO. Por exemplo: Para adicionar outros módulos de terceiros, use as seguintes opções: --with-module module-type. Módulo-arquivo, módulo-tipo. Module-file Adicione um ou mais módulos de terceiros à lista de módulos ligados estaticamente. O arquivo de módulo de módulo file-module será pesquisado no subdiretório modules module-type da árvore de origem do servidor Apache HTTP. Se ele não for encontrado lá configure considera módulo-file para ser um caminho de arquivo absoluto e tenta copiar o arquivo de origem para o subdiretório de tipo de módulo. Se o subdiretório não existir, ele será criado e preenchido com um Makefile. in padrão. Esta opção é útil para adicionar pequenos módulos externos consistindo em um arquivo de origem. Para módulos mais complexos você deve ler a documentação do fornecedor. Se você quiser criar um módulo DSO em vez de um apontar estaticamente ligado usar. --enable-maintainer-mode Ative os avisos de depuração e de tempo de compilação e carregue todos os módulos compilados. --enable-mods-shared LISTA DE MÓDULOS Define uma lista de módulos a serem habilitados e criados como módulos compartilhados dinâmicos. Isso significa que esses módulos precisam ser carregados dinamicamente usando a diretiva LoadModule. MODULE-LIST é uma lista separada por espaços de modulenames entre aspas. Os nomes dos módulos são fornecidos sem o mod anterior. Por exemplo: --enable-mods-sharedheaders rewrite dav Além disso, você pode usar as palavras-chave especiais reallyall. todos. Mais e poucos. Por exemplo, irá compilar a maioria dos módulos e construí-los como módulos DSO, só irá compilar um conjunto muito básico de módulos. O conjunto padrão é mais. As diretivas LoadModule para os módulos escolhidos serão geradas automaticamente no arquivo de configuração principal. Por padrão, todas essas diretivas serão comentadas, exceto para os módulos que são requeridos ou explicitamente selecionados por um argumento configure --enable-foo. Você pode alterar o conjunto de módulos carregados ativando ou desativando as diretivas LoadModule no httpd. conf. Além disso, as diretivas LoadModule para todos os módulos construídos podem ser ativadas através da opção de configuração - enable-load-all-modules. --enable-mods-static MODULE-LIST Esta opção comporta-se como --enable-mods-shared. Mas ligará os módulos dados estaticamente. Isso significa que esses módulos estarão sempre presentes durante a execução do httpd. Eles não precisam ser carregados com LoadModule. --enable-modules MODULE-LIST Esta opção se comporta como --enable-mods-shared. E também ligará os módulos dados dinamicamente. A palavra-chave especial none desativa a compilação de todos os módulos. --enable-v4-mapped Permitir que os soquetes IPv6 gerenciem conexões IPv4. --with-port PORT Define a porta na qual o httpd irá ouvir. Esse número de porta é usado ao gerar o arquivo de configuração httpd. conf. O padrão é 80. --with-program-name Define um nome alternativo executável. O padrão é httpd. Essas opções são usadas para definir pacotes opcionais. Geralmente você pode usar a seguinte sintaxe para definir um pacote opcional: --with - PACKAGE ARG Use o pacote PACKAGE. O valor padrão para ARG é sim. --without - PACOTE Não use o pacote PACOTE. Este é o mesmo que --with - PACKAGE no. Esta opção é fornecida pelo autoconf, mas não é muito útil para o Apache HTTP Server. --with-apr DIR FILE O Apache Portable Runtime (APR) faz parte da distribuição da fonte httpd e será automaticamente construído em conjunto com o servidor HTTP. Se você quiser usar um APR já instalado em vez disso, você tem que dizer configurar o caminho para o script apr-config. Você pode definir o caminho absoluto eo nome ou o diretório para o APR instalado. Apr-config deve existir dentro deste diretório ou do subdiretório bin. --with-apr-util DIR ARQUIVO Os Apache Portable Runtime Utilities (APU) fazem parte da distribuição de fontes httpd e serão automaticamente compilados em conjunto com o servidor HTTP. Se você quiser usar uma APU já instalada em vez disso, você tem que dizer configure o caminho para o script apu-config. Você pode definir o caminho absoluto eo nome ou o diretório para a APU instalada. Apu-config deve existir dentro deste diretório ou do subdiretório bin. --with-ssl DIR Se modssl foi habilitado configure procura um OpenSSL instalado. Você pode definir o caminho do diretório para o conjunto de ferramentas SSLTLS em vez disso. --with-z DIR configura pesquisas automaticamente para uma biblioteca zlib instalada se sua configuração de origem requer uma (por exemplo, quando moddeflate estiver habilitado). Você pode definir o caminho do diretório para a biblioteca de compactação em vez disso. Vários recursos do servidor HTTP Apache, incluindo modauthndbm e modrewrite s DBM RewriteMap usar bancos de dados simples keyvalue para pesquisas rápidas de informações. SDBM está incluído no APU, portanto, este banco de dados está sempre disponível. Se você quiser usar outros tipos de banco de dados, use as seguintes opções para habilitá-los: --with-gdbm path Se nenhum caminho for especificado, configure irá procurar os arquivos de inclusão e as bibliotecas de uma instalação do GNU DBM nos caminhos usuais de busca. Um caminho explícito fará com que o configure procure no path lib eo path include para os arquivos relevantes. Finalmente, o caminho pode especificar caminhos específicos de inclusão e biblioteca separados por dois pontos. --with-ndbm path Como --with-gdbm. Mas procura por uma nova instalação DBM. --com-berkeley-db caminho Como --with-gdbm. Mas procura uma instalação de Berkeley DB. As opções DBM são fornecidas pela APU e passadas através de seu script de configuração. Eles são inúteis quando se usa uma APU já instalada definida por --with-apr-util. Você pode usar mais do que uma implementação do DBM em conjunto com o seu servidor HTTP. O tipo de DBM apropriado será configurado dentro da configuração de tempo de execução a cada momento. --enable-static-support Criar uma versão estaticamente vinculada dos binários de suporte. Isso significa que um executável autônomo será construído com todas as bibliotecas necessárias integradas. Caso contrário, os binários de suporte são vinculados dinamicamente por padrão. --enable-suexec Use esta opção para ativar o suexec. Que permite que você defina uid e gid para processos gerados. Não use essa opção a menos que você entenda todas as implicações de segurança de executar um binário suid em seu servidor. Outras opções para configurar o suexec estão descritas abaixo. É possível criar um binário ligado estaticamente de um único programa de suporte utilizando as seguintes opções: --enable-static-ab Construir uma versão estática ligada de ab. --enable-static-checkgid Construir uma versão estaticamente vinculada do check-in. --enable-static-htdbm Criar uma versão estaticamente vinculada do htdbm. --enable-static-htdigest Criar uma versão estaticamente vinculada do htdigest. --enable-static-htpasswd Construa uma versão estaticamente vinculada do htpasswd. --enable-static-logresolve Criar uma versão ligada estática do logresolve. --enable-static-rotatelogs Construir uma versão estaticamente vinculada de rotatelogs. As opções a seguir são usadas para ajustar o comportamento do suexec. Consulte Configuração e instalação do suEXEC para obter mais informações. --with-suexec-bin Define o caminho para o binário suexec. O padrão é --sbindir (consulte Ajuste fino dos diretórios de instalação). --with-suexec-caller Define o usuário autorizado a chamar suexec. Ele deve ser o mesmo que o usuário sob o qual o httpd normalmente é executado. --with-suexec-docroot Define a árvore de diretórios sob a qual o acesso do suexec é permitido para executáveis. O valor padrão é --datadirhtdocs. --with-suexec-gidmin Defina isso como o menor GID permitido para ser um usuário-alvo para suexec. O valor padrão é 100. --with-suexec-logfile Define o nome do arquivo de log do suexec. Por padrão, o arquivo de log é denominado suexeclog e localizado em --logfiledir. --with-suexec-safepath Define o valor da variável de ambiente PATH a ser definida para processos iniciados pelo suexec. O valor padrão é usrlocalbin: usrbin: bin. --with-suexec-userdir Define o subdiretório no diretório de usuários que contém todos os executáveis ​​para os quais o acesso do suexec é permitido. Essa configuração é necessária quando você deseja usar o suexec juntamente com diretórios específicos do usuário (conforme fornecido por moduserdir). O padrão é publichtml. --with-suexec-uidmin Defina isso como o UID mais baixo permitido para ser um usuário de destino para suexec. O valor padrão é 100. --with-suexec-umask Define umask para processos iniciados pelo suexec. O padrão é as configurações do sistema. Existem algumas variáveis ​​de ambiente úteis para substituir as escolhas feitas pelo configure ou para ajudá-lo a encontrar bibliotecas e programas com nomes ou locais não padrão. CC Define o comando do compilador C a ser utilizado para a compilação. CFLAGS Define as bandeiras do compilador C que você deseja usar para compilação. CPP Define o comando do pré-processador C a ser utilizado. CPPFLAGS Definir sinalizadores de pré-processador CC, p. - Incluído se você tiver cabeçalhos em um diretório não-padrão incluído. LDFLAGS Definir sinalizadores de ligação, p. - L libdir se você tiver bibliotecas em um diretório não padronizado libdir. Aviso: Esta não é uma seção QampA. Os comentários colocados aqui devem ser apontados para sugestões sobre como melhorar a documentação ou o servidor e podem ser removidos novamente pelos nossos moderadores se eles forem implementados ou considerados invalidoff-topic. Perguntas sobre como gerenciar o Servidor HTTP Apache devem ser direcionadas para nosso canal IRC, httpd, no Freenode, ou enviadas para nossas listas de discussão. Copyright 2017 A Apache Software Foundation. Licenciado sob a Licença Apache, Versão 2.0. Eu instalei um aplicativo, p. Fdisk. Mas exigia bibliotecas para execução. Eu estou procurando utilitytool que me ajudará a criar um binário estático de binários já instalados. Para que eu possa usá-lo em qualquer lugar. As únicas ferramentas confiáveis ​​que eu encontrei é ErmineLight a partir daqui. Mas este é compartilhar-ware. Existe algum software de código aberto está disponível para o mesmo EDIT fdisk é apenas um exemplo. Eu na maioria das vezes trabalho em LFS, Então, se eu tenho que usar qualquer utilitário, eu preciso seguir as etapas como Então só para salvar o tempo, estou procurando uma solução em que vou fazer um binário estático do debian ou De fedora ou de outro distrbution, tentá-lo em LFS, e se funcionar bem ou como por minha exigência, eu irei com código-fonte para compilação. Perguntou May 2 11 at 18:38 Bem. Isso parece uma idéia muito ruim. Mas, é possível. Como fdisk é de código aberto, basta pegar sua fonte, e olhar para o Makefile. Você deve encontrar uma opção que passará - static para gcc na compilação. Eu não sou um guru CC, mas, tanto quanto eu sei, criar um binário estaticamente vinculado a partir de um binário dinâmico existente não é possível. Se você quiser usá-lo em qualquer lugar, eu recomendo usar uma pequena distribuição de manutenção que começa em segundos e permite que você modifique tudo. Faz mais sentido para mim, porque você provavelmente vai querer modificar o disco executando sua instalação LinuxUNIX. O link funciona para mim. A página tem o número de erros de erros tipográficos que você poderia esperar do trabalho de um programador profissional mais do que você esperaria de um site profissional, menos do que você esperaria de um e-mail de phishing. Sobre o mesmo que o post acima, venha a pensar nisso. Parece suspeito que este novo usuário iria juntar Stack Exchange apenas a tempo de postar um link para o que parece ser um novo site da web. Ndash G-Man Aug 27 15 às 22:58

Comments

Popular posts from this blog

Best binário opções empresas

Ojk forex

Forex trading made easy pdf cloud