Скомпилируйте и запустите программу C в Emacs

Я не могу найти, как запустить программу c в терминале emacs. Я могу скомпилировать его с M-x cc filename.c, и он отлично работает. Какова команда запуска программы. M-x (что я набираю).

Ответ 1

Лучше всего было бы использовать Makefile

---- X Makefile X----
build:
        gcc -o exec_name input.c
run:
    ./exec_name

И затем вы можете сделать M-x compile и дать команду как make build для компиляции программы и M-x compile , а затем make run для запуска программы.

Другим способом запуска будет M-x gdb

Ответ 2

shell-command - это то, что вам нужно.

Спросите Emacs об этом: C-h f "shell-command". Он связан с M-!

EDIT: уточнить требуемое действие

Сделайте это:

M-! foo-program enter

Где foo-program - это имя скомпилированного исполняемого файла.

Ответ 3

Хотя это может быть не самый оптимальный способ сделать это, но это очень быстрый способ просмотра вывода программы на C.

;; Run C programs directly from within emacs
(defun execute-c-program ()
  (interactive)
  (defvar foo)
  (setq foo (concat "gcc " (buffer-name) " && ./a.out" ))
  (shell-command foo))

(global-set-key [C-f1] 'execute-c-program)

Просто поместите следующий код в свой файл инициализации и нажмите Ctrl + F1, чтобы увидеть результат в минибуфере.

Ответ 4

Другой способ - запустить программу непосредственно в оболочке с помощью M-x shell или M-x term, чтобы открыть оболочку в буфере в первом случае, а реальную оболочку - во второй. Затем запустите свою программу ./myprog

Ответ 5

Вы всегда можете использовать compile так же, как и для его создания. Это хорошо, если ваша программа выплескивает сообщения, которые можно выделить и подпрыгнуть, как компилятор. Вы также можете написать короткую функцию, например:

(defun run-current-file ()
  "Runs the compilation of the current file.
Assumes it has the same name, but without an extension"
  (interactive)
  (compile (file-name-sans-extension buffer-file-name)))

чтобы у вас не было типа имя файла все время. Это дает дополнительное преимущество, которое можно привязать default-directory, если продукт сборки находится в другом каталоге, и у вас может быть более сложное переименование имени. Конечно, вы можете изменить compile на shell-command и т.д., Если вы предпочитаете этот вывод.