如何使用makefile?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用makefile?相关的知识,希望对你有一定的参考价值。
我下载了一个spkt工具箱,其中FFt工具包里面有fft.c文件和_fft.c和一个makefile.am和一个makefile.in。
我用DEV-C++编译两个.c文件都不能编译成功,这行出了问题“ fprintf(stderr, " data sequence (%s) [stdin]\n", FORMAT);”错误原因是[Linker error]undefined reference to 'dgetmem'
[Linker error]undefined reference to 'WinMain@16'
Id returned 1 exit status
请问:如何使程序工作起来,或者如何使用makefile?
1.创建程序
在linux控制台界面下 ,输入vi hello_test.c,输入i进入编辑插入模式,输入代码如下:
#include <stdio.h>
int main(void)
printf("Hello,Word!/n");
return 0;
用gcc编译程序
输入命令:gcc hello_test.c
输入命令:ls
显示:a.out hello_test.c
输入命令:./a.out //执行程序
2.使用Makefile
(1)创建Makefile,在hello_test.c所在目录输入 vi Makefile
(2)输入Makefile内容。在vi插入模式下输入:
hello_test : hello_test.c
gcc -o hello_test hello_test.c //特别注意 gcc前面不是空格,而是tab间隔符,否则会出现makefile:2: *** 遗漏分隔符错误
clean :
rm -fr hello_test *.o *.core
(3)输入make,屏幕输出 gcc -o hello_test hello_test.c,表示编译已经通过。
生成 hello_test。 参考技术A make工具,只是一个批处理工具。如果只是使用makefile,那么只要有make.exe这个文件就可以了。
make工具会根据makefile里面的信息来编译程序。在makefile里面,一般指定了用什么编译器,用什么程序链接,以及需要那些库的支持,还有一些其它的设置。
如果你没有相应的编译工具和库的支持,make会出错的。所以,你必须要先弄清楚,你拿到的c程序,需要什么样的环境才能编译。一般来说,你看看它C头文件和makefile里面的信息就应该能知道。本回答被提问者采纳 参考技术B 出现这样的连接错误的话,可能是因为你的源文件里指定的这个函数所在的库文件不存在,或者那个库文件存在但却不是为你的电脑的cpu结构build的。如果你确定你有那个库文件,那么你需要在连接的时候告诉连接器你需要依赖这个库文件,并且把路径告诉它。如果还不成功的话,那么就可能是你需要合适的cpu结构的那个相同的库文件,就是amd64,itanium,x86之类的。 参考技术C makefile
就是告诉make程序怎么编译文件。比如说要生成可执行程序my_exe.exe.该程序需要三个文件a1.c
a2.c
和
a3.c
那么你的makefile文件就可以写为
my_exe.exe:
a1.o
a2.o
a3.o
ld
-o
my_exe.exe
a1.o
a2.o
a3.o
%.o
:
%.c
cc
-o
$@
$<
第一段是说我要生成文件my_exe.exe需要三个.o文件;要是都有就会执行下面的链接命令;;;如果有的.o不存在就会执行下面那段代码。下面的意思是一个.o文件依赖于与它同名的。c要是这个.c文件存在,则编译并成.o,若还不存在就会报错 参考技术D 怎么执行呢
比如我是一个10.c和ghl.h的文件,10.c里有程序;
edit:10.c
ghl.h
gcc
-o
edit
10.c
clean:
rm
edit
10.o
修改makefile文件,注意gcc之前是一个tab键
然后make,就会在当前目录下会生成edit可执行文件,
./edit
即可执行
以上是关于如何使用makefile?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 makefile 使用 Visual Studio 编译代码