Existe alguma maneira de compilar código adicional em tempo de execução em C ou C ++?

Aqui está o que eu quero fazer:

Execute um programa e inicialize algumas estruturas de dados.Em seguida, compile o código adicional que pode acessar / modificar as estruturas de dados existentes.Repita o passo 2, conforme necessário.

Eu quero ser capaz de fazer isso com ambosC eC++ usandogcc (e eventualmenteJava) em sistemas do tipo Unix (especialmente Linux e Mac OS X). A idéia é implementar basicamente um loop de leitura e impressão para essas linguagens que compila expressões e instruções à medida que são inseridas e as utiliza para modificar estruturas de dados existentes (algo que é feito o tempo todo em linguagens de script). Eu estou escrevendo esta ferramenta empython, que gera oC/C++ arquivos, mas isso não deve ser relevante.

Eu explorei isso com bibliotecas compartilhadas, mas aprendi que modificar bibliotecas compartilhadas não afeta programas que já estão em execução. Eu também tentei usar a memória compartilhada, mas não consegui encontrar uma maneira de carregar uma função no heap. Eu também considerei usar o código assembly, mas ainda não tentei fazê-lo.

Eu preferiria não usar compiladores que não fossemgcc a menos que não há absolutamente nenhuma maneira de fazê-lo emgcc.

Se alguém tem alguma idéia ou sabe como fazer isso, qualquer ajuda será apreciada.

questionAnswers(6)

yourAnswerToTheQuestion