3

Я хочу создать программу python, которая будет вводить путь к .c файлу, а затем скомпилировать его.Можно ли скомпилировать c-код с помощью python?

Программа будет выдавать OK на экран, если компиляция выполнена успешно, и BAD в противном случае.

Я пытался это сделать, но ничего не мог найти. Я также пытался запустить cmd внутри python с аргументом программы компиляции, но он не работал.

To clearfiy - У меня уже есть очень специфический компилятор на моей машине, который я хочу запустить. Я не хочу, чтобы python выступал в качестве компилятора. Просто получите код, запустите мой компилятор и посмотрите, что ответ.

  • Он должен работать на Linux-сервере с python 2.4.

Благодаря

+1

Вы можете посмотреть в distutils, но все, что будет делать это предоставление слоя python для gcc или аналогичного компилятора, в конце концов, python не будет выполнять компиляцию и будет иметь зависимости. – jondavidjohn

+0

Есть хороший разговор с Pycon [Использование Python для отладки кода C и C++ (с использованием gdb)] (http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-using-python- to-debug-c-and-c-code-using-gdb-4895525) может быть, это может вам помочь. – RanRag

+0

Если вы хотите запустить компилятор, вы просто запускаете подпроцесс с Python. В этом случае этот вопрос является полным дублированием каждого другого вопроса, который пытается запустить подпроцесс под Python. Закрой его. Вот все связанные вопросы, которые дают примерно одинаковый ответ. http://stackoverflow.com/search?q=python+subprocess. Все они отвечают на «уточненный» вопрос. –

ответ

8

Конечно, почему нет? Конечно, вам понадобится GCC (или llvm), чтобы у вас было что-то, с чем можно было скомпилировать. Вы можете просто использовать os.system или любой другой способ вызова внешней программы.

Конечно, вам, вероятно, лучше смотреть на что-то вроде SCons, которое уже существует для решения этой проблемы.

Плюс, чтобы ответить на фактически заданный вопрос, нет ничего, что помешало бы вам написать компилятор/ассемблер/компоновщик в python, они просто программы, как и все остальное. Производительность, вероятно, не очень хорошая.

+0

спасибо. Os.system может быть то, что мне нужно – RanZilber

+1

Как помогает Scons в этом. Не могли бы вы рассказать? – AdityaPande

6

Шаг 1. Получите PLY. Python Lex и Yacc. http://www.dabeaz.com/ply/

Шаг 2. Найти конфигурацию Yacc/Lex для C. http://www.lysator.liu.se/c/ANSI-C-grammar-y.html

Шаг 3. Tweak СЛОЯ использовать правила языка C, которые вы нашли.

Шаг 4. Запуск. Вы «компилируете» C-код - проверяете синтаксис.

+0

спасибо, но это не то, что мне нужно, посмотрите мое редактирование – RanZilber

Смежные вопросы