![查找最新修改的 *.c 文件并使用流水线在终端内对其进行编译?](https://linux22.com/image/1159946/%E6%9F%A5%E6%89%BE%E6%9C%80%E6%96%B0%E4%BF%AE%E6%94%B9%E7%9A%84%20*.c%20%E6%96%87%E4%BB%B6%E5%B9%B6%E4%BD%BF%E7%94%A8%E6%B5%81%E6%B0%B4%E7%BA%BF%E5%9C%A8%E7%BB%88%E7%AB%AF%E5%86%85%E5%AF%B9%E5%85%B6%E8%BF%9B%E8%A1%8C%E7%BC%96%E8%AF%91%EF%BC%9F.png)
最近,我使用 Linux 中的终端编写了更多代码,以更深入地了解编程。现在,我正在尝试使用以下命令自动执行编译过程:
find . -type f -mmin -1 -name "*.c" | gcc -o output.o -xc -
它基本上应该找到以 结尾的最新修改文件"*.c"
并进行编译。但是我总是得到以下错误:
<stdin>:1:1: error: expected identifier or ‘(’ before ‘.’ token
有人能帮助我并解释我做错了什么或给我展示另一种选择吗?
非常感谢,祝您有愉快的一天!
答案1
您正在管道姓名文件作为要编译的代码gcc
您可以将名称作为文件参数传递,而不是使用xargs
:
find . -type f -mmin -1 -name "*.c" | xargs gcc -o output.o -xc
然而,这项工作的“正确”工具确实是make
- 它将确定哪些目标比其先决条件更旧,并根据需要进行编译。