【发布时间】:2014-04-21 21:38:01
【问题描述】:
我正在为我的一个程序设计一个生成文件,该程序运行一个简单的文本编辑程序并接收一个文件作为命令行参数。不过,我遇到的问题是,当我尝试在 makefile 中传递命令行参数时,编译器要么似乎不承认该文件,要么给出某种错误以指示链接出错。我的 makefile 源代码如下所示:
1 all: basic.c
2 gcc -o basic2 basic2.c data
3 write: basic2.o
4 gcc -o basic2 basic2.o
5 basic2.o: basic2.c
6 gcc basic2.c data
以及结果输出:
Must name an input file
如果 basic2.c 在没有参数(例如数据)的情况下运行,程序应该打印出这些内容。我应该将参数移动到不同的行,还是有更好的方法来写出这段代码?
另外,作为参考,basic2.c 使用以下代码:
main(int argc, char *argv[])
7 {
8 if(argc > 2) {
9 printf("Too many file names\n");
10 exit(0);
11 }
12 if(argc != 2) {
13 printf("Must name a file\n");
14 exit(0);
15 }
我是否引用了错误的 argv 索引?
【问题讨论】:
-
Makefile 用于编译程序,它不会运行它们。
-
Makefiles 可以用于运行程序,但是你当前的 Makefile 只是在编译。
-
是的,基本问题是您混淆了编译和运行。编译时不向程序提供选项。
标签: c compilation linker makefile