如何使用makefile?

我下载了一个spkt工具箱,其中FFt工具包里面有fft.c文件和_fft.c和一个makefile.am和一个makefile.in。我用DEV-C++编译两个.c文件... 我下载了一个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?
展开
 我来答
可以叫我表哥
推荐于2017-10-04 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464978
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
以hello_test.c文件为例
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。
super_admi
推荐于2017-09-24 · TA获得超过1126个赞
知道小有建树答主
回答量:1169
采纳率:0%
帮助的人:920万
展开全部
make工具,只是一个批处理工具。如果只是使用makefile,那么只要有make.exe这个文件就可以了。
make工具会根据makefile里面的信息来编译程序。在makefile里面,一般指定了用什么编译器,用什么程序链接,以及需要那些库的支持,还有一些其它的设置。

如果你没有相应的编译工具和库的支持,make会出错的。所以,你必须要先弄清楚,你拿到的c程序,需要什么样的环境才能编译。一般来说,你看看它C头文件和makefile里面的信息就应该能知道。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaisa1028
2009-07-16 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5429
采纳率:28%
帮助的人:2570万
展开全部
出现这样的连接错误的话,可能是因为你的源文件里指定的这个函数所在的库文件不存在,或者那个库文件存在但却不是为你的电脑的cpu结构build的。如果你确定你有那个库文件,那么你需要在连接的时候告诉连接器你需要依赖这个库文件,并且把路径告诉它。如果还不成功的话,那么就可能是你需要合适的cpu结构的那个相同的库文件,就是amd64,itanium,x86之类的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蒯作员醉易
2019-10-13 · TA获得超过3800个赞
知道大有可为答主
回答量:3088
采纳率:30%
帮助的人:295万
展开全部
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,若还不存在就会报错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
竹琳竭贤
2019-01-15 · TA获得超过3612个赞
知道大有可为答主
回答量:3072
采纳率:26%
帮助的人:199万
展开全部
怎么执行呢
比如我是一个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
即可执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式