Estou criando um sistema, principalmente para fins educacionais, não apenas para o processo de construção em si, mas também para o desenvolvimento / depuração.
Isso é o que eu gostaria de alcançar.
-
Instale um conjunto de ferramentas completamente independente do conjunto de ferramentas do sistema.
1.1. GCC (C, C ++) é uma obrigação. Eu quero manter os compiladores isolados do sistema operacional (por exemplo, para atualizar quando julgar necessário), e também para construir debstdc + + debug / release, ambos com símbolos de depuração e origem. "Isolado" também significa que prefiro que o GCC não contenha os caminhos habituais codificados. O sistema atual GCC é 5.1.1, eu iria construir 5.2.0.
1.2. libc / glibc seria um bom ter, pelas mesmas duas razões acima. É aconselhável? Eu provavelmente usaria a mesma versão que a instalada no sistema.
1.3. fazer / binutils. É necessário / aconselhável? Eu provavelmente usaria as mesmas versões que as instaladas no sistema.
-
Construa a partir do código-fonte algumas bibliotecas / ferramentas que eu uso com mais frequência, como:
2.1. zlib
2.2. UTI
2.3. OpenSSL
2.4. Boost
2.5. Qt
etc.
Eu os construo a partir do código-fonte, mais uma vez, porque gosto de criar versões de depuração / liberação de cada um, vinculadas a versões de depuração / release de outras dependências internas (por exemplo, Boost - > ICU), com símbolos de depuração e fonte para todos. E também porque gosto de experimentar diferentes opções de configuração.
-
Para outras bibliotecas / ferramentas, use os pacotes das repos do sistema.
3.1. Isso inclui requisitos para as bibliotecas acima - por exemplo, libxbc, libgstreamer ou dbus para o Qt.
-
Mesmo que eu tenha acesso root (essa é uma VM do Fedora no VirtualBox), prefiro ficar sem ela.
Eu analisei o Linux From Scratch e, embora haja muitas informações úteis para o que pretendo fazer, acredito, há uma diferença fundamental, pois não quero algo completamente separado do sistema "host". Eu quero que minhas ferramentas / bibliotecas sempre pesquisem meus caminhos de instalação antes do sistema, mas caso contrário, tenham acesso a todo o resto instalado a partir dos repositórios. Eu também não quero remover nenhuma ferramenta do sistema (por exemplo, GCC / binutils) e bibliotecas (eu acredito que o sistema deve usar sua própria libc ou OpenSSL, ao invés da minha). Se o sistema precisar construir algo, ele não deve encontrar minhas ferramentas / bibliotecas.
-
Minhas perguntas.
5.1. Como afirmado em 1.3, acima, devo usar o make / binutils do sistema, ou preciso criar o meu próprio a partir do código-fonte?
5.2. Dada a minha exigência de ter acesso ao sistema "host", um ambiente chroot é viável / desejável?
5.3. Há mais alguma coisa que eu deva investigar antes de começar a fazer isso?
Eu vou admitir que estou um pouco fora da minha profundidade, mas é assim que eu sempre aprendi tudo, então isso não é um problema.
Qualquer ajuda / sugestão / ponteiro para a documentação relevante é muito bem-vinda.
Editar para responder à resposta do cas
Meu objetivo não é de ponta, mas controle sobre as versões de depuração. Não consigo encontrar uma versão de depuração (não otimizada) do libstdc ++ (obtida configurando o GCC com --enable-libstdcxx-debug
), nos repositórios do Fedora. Se eu tivesse isso em um pacote, não precisaria criar o GCC a partir do código-fonte.
E, embora aprender mais sobre o processo de criação e sua interação com os componentes do sistema seja um bônus, o que eu realmente quero é experimentar com código GDB, carregamento de símbolo e depuração otimizada em relação a código não otimizado. É por isso que eu gostaria de ter as versões não otimizadas das bibliotecas.
Concordo com o problema. Minhas duas tentativas anteriores, nas quais segui a maneira "normal" mencionada, resultaram em erros incomuns ao criar o Qt (o software mais complexo que espero construir a partir da fonte); e, ao construir com o "toolchain do sistema", tudo correu bem. É por isso que pensei que talvez houvesse uma maneira melhor de fazer, mais completa, mas sem a necessidade de construir todo o sistema a partir da fonte.
Eu posso mudar para uma distribuição diferente, desde que eu não tenha que construir tudo a partir do código-fonte, e não tenho nenhuma exigência em versões de software, ou seja, eu poderia criar o GCC 5.1.1, que é o mesmo que eu tenho no meu Fedora VM, para minimizar as diferenças. Eu já estou seguindo as "receitas de compilação" dos pacotes do Fedora, tanto quanto possível.