Я не могу найти, как запустить программу c в терминале emacs. Я могу скомпилировать его с M-x cc filename.c, и он отлично работает. Какова команда запуска программы. M-x (что я набираю).
Скомпилируйте и запустите программу C в Emacs
Ответ 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
и т.д., Если вы предпочитаете этот вывод.