AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 411434
Accepted
SedriX
SedriX
Asked: 2017-12-18 09:19:27 +0800 CST2017-12-18 09:19:27 +0800 CST 2017-12-18 09:19:27 +0800 CST

Quando os diretórios "lib" e "include" devem ser criados ao compilar a partir do código-fonte?

  • 772

Estou tentando construir binutilsna plataforma A , que será executada na plataforma A e terá como alvo a plataforma B .

Eu tenho a fonte de binutilsin /home/cedric/source/binutils-2.29/, e realizo as 2 compilações a seguir:

cd /home/cedric/source/
mkdir default/ && cd default/
mkdir build/ install/ & cd build/
../../binutils-2.29/configure --prefix=/home/cedric/source/default/install/
make
make install

e

cd /home/cedric/source/
mkdir lfs/ && cd lfs/
mkdir build/ install/ & cd build/
../../binutils-2.29/configure --prefix=/home/cedric/source/lfs/install/ --target=x86_64-lfs-linux-gnu
make
make install

Acontece que há mais 2 diretórios em default/installdo que em lfs/install, ou seja lib, que contém bibliotecas estáticas e bfd, que contém alguns cabeçalhos.opcodesinclude

minha confusão

Por que essas bibliotecas e cabeçalhos estáticos são instalados (para que eles se destinam, já que binutilsferramentas como lde asetc. já foram construídas)? E por que eles desaparecem ao construir para outra plataforma?

A pesquisa que fiz ainda não eliminou minha confusão:

binutils-2.29/configure --helpe READMEem binutils-2.29/, binutils-2.29/binutils/ebinutils-2.29/bfd/

FWIW, encontrei o seguinte na ajuda do configure, que tem algo a ver com o diretório que ele pode criar e seu valor padrão:

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
              [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
              [PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]
compiling make
  • 1 1 respostas
  • 79 Views

1 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2017-12-18T10:06:59+08:002017-12-18T10:06:59+08:00

    A resposta curta é que você espera libque seja construído (ou melhor, instalado) se houver uma biblioteca para instalar e includese houver cabeçalhos para instalar. Geralmente os dois andam juntos (pelo menos para bibliotecas C e C++).

    No binutilscaso ', as bibliotecas e os cabeçalhos associados são libbfde libopcodes, como você mencionou. libbfdé uma biblioteca usada para manipular arquivos objeto em uma variedade de formatos, libopcodesé uma biblioteca usada para mapear opcodes para instruções. libbfdé instalado por padrão para compilação no mesmo host, mas não para compilação cruzada, e é por isso que você está vendo um comportamento diferente em seus cenários. Você pode ver o padrão condicional no bfd/acinclude.m4código-fonte. Ambas as bibliotecas devem ser construídas em todos os casos.

    Você só precisa libbfdse quiser construir o GDB. Se você deseja instalá-lo em um cenário de compilação cruzada, pode ./configurefazer isso com a --enable-install-libbfdopção; quando você fizer isso, as bibliotecas e os arquivos de cabeçalho serão instalados no diretório específico do host e do destino apropriado ( libbfdé construído para o host, mas contém código específico do destino).

    • 2

relate perguntas

  • Crie um script bash multi-script que seja compilado e mantenha um log

  • Função de referência no Makefile?

  • Meson não encontra as bibliotecas do Boost

  • Como recompilar tudo eficientemente em um sistema Gentoo Linux?

  • O OpenVPN auto-compilado não inicia a partir do systemd

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve