用于编译和链接所有C文件的别名或命令
我最近开始使用gcc命令手动编译/链接我的C文件.但是,它需要在命令末尾键入所有源文件.当有许多文件要编译/链接时,它可能很无聊. 我在.bashrc中的这一行是这样的:
我发现它工作了一段时间,但大多数时候编译将返回这个:
我认为管道会将ls * .c * .h的结果作为gcc的参数,但它似乎不会那样工作.我究竟做错了什么?有没有更好的方法来实现同样的目标? 谢谢你的帮助 最佳答案
管道不会创建命令行参数.管道输入标准输入.
您需要xargs将标准输入转换为命令行参数. 但是你根本不需要(或想要)xargs或ls或标准输入. 如果您只想将每个.c文件编译到可执行文件中,那么只需使用:
(gcc命令行通常不需要.h文件.) 正如Kay在评论中指出的那样,上述命令的迂腐正确和更安全的版本是(我不打算以贬义的方式):
有关此处各种问题的详细讨论,请参见Filenames and Pathnames in Shell: How to do it Correctly. 话虽这么说,你可以使用任何一种工具来避免需要这样做,并且只需要在一些事情发生变化时就需要重建所有东西. 诸如make或其许多克隆之类的工具,“前端”(例如autotools,cmake)或替代品(tup,scons,cons和大约一百万个其他工具). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 如何在Perl中为需要JavaScript的页面进行webtesti
- linux – 我在-rwxr-xr-x之后看到一个点
- linux – 用特殊字符sed
- LINUX实战:Red Hat Enterprise Linux 7.2修改主机名(hostn
- linux – 服务tomcat8无法使用服务tomcat8 start启动
- Linux cdev vs register_chrdev
- linux – 为什么ntpd会监听这么多端口/地址?
- oh-my-zsh禁用lib history.zsh
- 在Linux里怎样安装和启动nginx?
- Linux howto / tutorial / help sites?