디스크에 쓰지 않고도 파일을 컴파일할 수 있나요?

디스크에 쓰지 않고도 파일을 컴파일할 수 있나요?

C/C++ 프로그램의 일부 코드를 컴파일하고 싶습니다. 작동 방식은 다음과 같습니다. C 코드를 구성하는 ASCII 텍스트가 포함된 버퍼(동적으로 할당됨)를 메모리에 갖게 됩니다. 내 C/C++에서는 시스템의 C 컴파일러를 fork()호출하여 코드를 메모리에 컴파일했습니다.exec()

gcc그렇다면 내 코드에 직접 액세스할 수 있는 방법(파이프 등을 사용하는 등)이 있습니까? 아니면 코드를 디스크에 쓰고 디스크에서 읽어야 하는지 궁금합니다 .

답변1

이것은 스스로 쉽게 테스트할 수 있습니다.

echo -e '#include <stdio.h>\nmain() {\nputs("hello, world");\n}' |
    gcc -x c -pipe -

./a.out

답변2

컴파일러의 라이브러리 버전을 사용하여 코드를 컴파일합니다. 이는 모든 주요 컴파일러에 대해 잘 문서화되어 있습니다.

  • 걸프 협력 협의회:libgccjit
  • clang: libclang/Direct 대 llvm/clangDriver
  • TCC(C만 해당):libtcc(왜냐하면틀림없이Fabrice Bellard는 가장 공간 효율적인 C 컴파일러 중 하나를 작성했습니다. )

관련 정보