Para todas as intenções e propósitos práticos, o que você está pedindo é impossível, e nos próximos parágrafos há uma explicação do porquê e algumas possíveis soluções alternativas.
Enquanto o gcc, o glibc, o kernel do Linux, e outras várias bibliotecas do sistema não estão tão intimamente acopladas como seriam no FreeBSD no OpenBSD, elas têm uma evolução paralela. Como os últimos holdouts de suporte para o gcc 2.95 ficaram sem suporte no kernel em 2005, também tem suporte para isso nas bibliotecas do sistema central.
Apenas instalar uma versão 2.x do gcc em um sistema moderno seria um obstáculo significativo por causa de todas as dependências envolvidas - isso depende de versões mais antigas de bibliotecas de sistema que a comunidade Linux há muito tempo mudou, criando uma situação de "dependency hell" até para instalar a partir do código-fonte, muito menos tentar instalar a partir de pacotes - as dependências provavelmente forçariam você a fazer o downgrade através de uma dúzia de gerações ou mais de sua distribuição Linux, para uma versão que não é mais suportada, mas também terrivelmente inseguro.
Depois de instalar o gcc, você ainda tem o problema de compilar seu aplicativo - e as bibliotecas do sistema mudaram tanto quanto ou mais do que o gcc, então você teria que passar por todo esse processo novamente por dezenas, talvez centenas de outras dependências. Todas essas dependências, é claro, já estão sendo usadas em outros lugares do sistema, não deixando nenhuma maneira sensata de obter as versões certas instaladas.
Você provavelmente está olhando para milhares, possivelmente centenas de milhares de horas de trabalho antes que você tenha alguma chance de fazer todas as peças funcionarem novamente, e ao longo do caminho, você teria transformado seu sistema em algo tão inatingível e instável que mesmo reiniciar o sistema seria um exercício de fé cega e você teria reintroduzido mais de uma década de sérias vulnerabilidades de segurança em seu sistema.
Soluções alternativas
Toda a esperança, no entanto, não está perdida. As soluções de curto prazo são um chroot ou virtualização.
uma das respostas de https://stackoverflow.com/questions/8176798/installing-gcc-2-95-3-in-ubuntu-10-04-3 menciona que o Debian Etch foi uma das últimas distribuições a ter suporte ao gcc 2.95. Construir um chroot do Debian Etch ou uma máquina virtual deve ser possível. Esta distribuição recebeu o suporte de segurança pela última vez em 2010, portanto, você ainda considera quatro anos de vulnerabilidades de segurança acumuladas.
As versões antigas do Debian que você precisaria para isso são encontradas somente em https://archive.debian.org/debian como eles são totalmente não mantidos neste momento.
debootstrap ( https://wiki.debian.org/Debootstrap ) parece ainda ser capaz de instalar o etch, possibilitando a criação de um chroot funcional, dentro do qual você poderá compilar e rodar programas antigos.
Dadas as implicações de segurança, a solução de longo prazo tem que ser atualizar o código para compilar em uma distribuição moderna e atualmente suportada o mais rápido possível. A menos que o software em questão esteja sendo usado para um propósito único, como a recuperação de dados de uma versão mais antiga de um programa, isso é absolutamente crítico.
Uma solução viável para tornar este processo de portabilidade gerenciável pode ser avançar progressivamente, avançar e corrigir os problemas de compilação para cada versão do Debian interveniente, antes de finalmente atualizar o código para a versão mais recente do Ubuntu. Como o Debian tem um ciclo de lançamento muito mais longo do que o Ubuntu e uma compatibilidade decente, isso não deve ser uma tarefa muito intransponível, e quase certamente será mais viável do que portar o gcc 2.x para o Ubuntu mais recente.
Edit: Etch é realmente perfeito para grande parte do esforço de portabilidade - ele suporta versões do gcc de 2,95 para 4,1, tornando possível atualizar seu código antigo em pequenos passos.