-
生成文件的内容(请注意,在目标行下使用制表键):
#makefire tesr for hello program#written by emdoor
cc=gcc
cflags=
all:hello
cc) $cflags) -o hello(cc) $cflags) -c -o
phony: clean
clean:
rm -rf hello *.o
其内容如下:包括
int main()
运行信息:root@yuanbing ] makegcc -c -o
gcc -o hello
root@yuanbing ~]# ./helloyuanbing
root@yuanbing ~]#
下来,绝对可用。
-
phony: clean
此行已删除并试用。
ps:我不知道如何使用makefile,我只是觉得这一行不正常。
-
您的 makefile 没有目标,因此 make 将您的编译命令视为注释。 要开始学习,您可以使用伪目标,例如:
phony:all
all:g++ o server
g++ o client
假的:All意味着ALT都是伪目标,以后遇到他的时候,他遵循的命令会直接执行,不加判断。 您甚至可以添加 linux 命令,例如:
phony:all
all:g++ o server
g++ o client
ls -lps -l &&date
记住 Tab 键。
开始学习 makefile 就足够了。
制作makefile的难点在于理解别人在写什么,可以搜索“和我一起学习写makefile”。
-
makefile 需要将目标作为目标,并且存在建议更改 makefile 的依赖项
gcc -o server
gcc -o client
gcc
-
target…
prerequisite…
tab) 命令
格式解释。
target:生成的对象,可以是可执行文件,也可以是中间对象。
先决条件:生成目标所需的文件。
command:make 是需要执行的命令,一般是编译和链接命令,命令前面必须有 Tab 键才能生效。
一个 makefile 的简单示例(包含:
生成文件和源文件位于新的命令文件夹中; 然后进入控制台,切换到命令目录,直接输入make will be born with two files,如下图所示:
控制台下的命令:
命令说明: gcc c:编译命令目录下的源文件,编译后会生成中间文件。
rm:删除命令目录下的 AND 文件。
:输出一个可执行文件,上面写着hello world!
make:make 命令与 make exe 命令具有相同的效果。
-
:flex
g++ fo
gcc -o
final:
g++ lfl final
将其保存到名为 makefile 的程序目录中,然后将其 cd 到该目录并尝试一下。
flex 是一个用于生成 c 文件的词法生成器,但是我不太知道如何具体使用 g++,也不熟悉它,所以命令应该是错误的,makefile 格式和我上面写的一样,下面的长空格是 tab
而你的 -lfl 我理解他是 GCC 的参数。
我可以给你发一个pdf的制作makefile的规则,你看完后基本上会用到makefile。
mengxinghun_
其余的人坐下来等待标准答案。
-
你从基础开始,首先了解如何手动编译,然后学习 makefile 语法,最后自己编写 makefile。
您现在的 makefile 订单有问题。 我想在不编译的情况下运行它,并且没有运行时的路径。
标准 makefile:
run: hello
hellohello:
cc -o hello
简单明了。
-
我认为暗示很清楚。
您的 makefile 在制作时指示(默认值为 all)。 首先执行 exec 变量的内容。 也就是说,hello,然后 make 当然不能运行,并且它退出并出现错误。
ps:我也不用makefile控制。 从你不明白发生了什么的提示来看,你完全不知道 Linux 的东西。
我建议学习自动配置器,如 automake 和 autoconf。 至少你不必编写自己的 makefile,为一个大项目编写自己的 makefile 会杀死你。
-
我想编译 delete cdr write cron 的两个可执行程序并将它们直接复制到家中,我应该如何修改这个 makefile? 这是如何做到的,将以下三句话添加到makefile中,并且不要对点和Tab键犯错误。
phony:install
install:
cp delete_cdr write_cron /home; chmod 775 delete_cdr write_cron ;
-
所有目标生成都需要依赖 delete cdr write cron。 但是这两个文件,没有规则来编译和生成它们。
由于定义了 cdrexe = delete cdr write cron
我认为至少需要添加一个类似的规则。
就是如何通过删除生成删除cdr,通过写入生成写cron
-
edit : /
cc -o edit /
这意味着这些对象链接到名为 edit 的可执行文件。 cc 是 gcc 编译器。
-
原始 makefile 中的依赖项是(source first, target last)。
=> ===> m1
定义的目标的依赖与命令行中的依赖相同,修改定义的依赖会导致目标被重新编译,修改后的依赖也会被更改
=> m2
您定义的目标依赖与编译命令中的依赖不一致,编译系统只是根据命令行中的默认依赖进行编译,在修改定义的依赖时不会导致目标被重新编译。
-
因为,m2:$(obj) 其中 m2 只是一个指示符,可以写成任何值。 此处的修改不会造成问题。
这个地方,虽然是错的,没有执行,但是在编译cc -c的时候默认找到的,所以没有影响,是巧合。
-
1. 不是makefile文件,而是main函数没有写在应用程序中。
此错误是由 LD 链接过程生成的,而不是由编译过程生成的。
-
你为什么不发布 makefile 的内容?
看起来您正在使用一些不合适的编译选项。
如果 gcc 参数后面有“-d”,则可以将其删除。
让我们看看 makefile 中是否有任何变量的定义有问题。
另外,看看“main”功能o“文件是否包含在输入文件中链接。
-
$(cc) $o $@
修改为 $(cc) $cflags) $o $@
这将生效。 ldflags 类似,您需要自己编写。
-
我认为你的 makefile 写得不正确,就你说的 cflags 和 ldflags 而言,有定义,但没有参考,它怎么可能有用。
-
: $objs)
cc) $cflags $ldflags $^o $@
尝试将其修改为上述内容。
建议使用32位,建议使用CentOS Linux; Linux64位系统占用的内存比较多,如果内存足够大,90%的用户都可以使用,也就是普通用户,32位支持很多软件,应该说几乎所有的比特系统都比较了,尤其是对于特殊职业的版本,比如设计、架构和大型显卡。
free 的输出包含物理内存 mem 和交换分区的具体用法,如总内存、已用内存、缓存、可用内存等。 其中 cache 是缓冲区和缓存的总和。 >>>More
grep 将模式视为正则表达式,而 fgrep 将模式视为固定字符串,因此后者比前者快,当然后者的搜索功能也比前者弱。