Да, это возможно сделать, и на самом деле довольно просто. Вы выводите исходный код во временный файл (mkstmp
), вы fork
/ exec
- процесс компиляции (который выводит во временный файл), вы fork/exec
результирующую программу, перед этим вы dup2
и pipe
подключить вход и выход. Это базовое программирование в Unix, здесь нет ничего сложного, чтобы сделать его на C.
Сам процесс генерации кода может быть сложнее понять, но это сильно зависит от проекта.
Кроме того, у нас есть современные инструменты уже через пару месяцев: я считаю, что Clang , безусловно, может быть чем-то, на что можно посмотреть для такого рода вещей. Если генерация кода, которую вы планируете сделать, проста (или не проста, но структурирована), вы также можете напрямую выводить код LLVM . Это не сложно, и позволяет вам генерировать эффективный и своевременно скомпилированный код.