dyc2007 发表于 2015-09-25 12:44

包含有makefile文件和.a文件的程序在Gcc下怎么编译? 谢谢!!!

向各位大侠求助,包含有makefile文件和.a文件的程序在Gcc下怎么编译? 谢谢!!!

在网上下了一个软件defer,是采用Linux下GCC编译的。该文件夹下全部文件如图1所示。我在win7 下装了minGW,运行make命令,提示出错,出错信息如图2,应该是metis.c中找不到“HMETIS_PartRecursive”。在metis.c中确实调用了HMETIS_PartRecursive,见图3。查了下HMETIS手册,发现这个程序是在libhmetis.a文件中,见图4。我想问一下,像这种既有makefile文件,又有.a文件的程序,在gcc下怎么样进行编译?谢谢!


图1 defer文件夹下文件列表,最上面文件就是libhmetis.a


图2 make 时的出错提示


图3 metis.c 调用HMETIS_PartRecursive的程序片段


图4 HMETIS_PartRecursive的出处说明













d:\defer>make
gcc -O3-c -o dataProc.o dataProc.c
gcc -O3-c -o metis.o metis.c
gcc -O3-c -o shapeCurve.o shapeCurve.c
gcc -O3-c -o curveAct.o curveAct.c
gcc -O3-c -o utility.o utility.c
gcc -O3-c -o swap.o swap.c
gcc -O3-c -o orderTable.o orderTable.c
gcc -O3-c -o ep.o ep.c
gcc -O3-c -o blockPack.o blockPack.c
gcc -O3-c -o traceBack.o traceBack.c
gcc -O3-o DeFer main.c dataProc.o metis.o shapeCurve.o curveAct.o utility.o sw
ap.o orderTable.o ep.o blockPack.o traceBack.o -lm -lhmetis -L.
metis.o:metis.c:(.text+0xc61): undefined reference to `HMETIS_PartRecursive'
metis.o:metis.c:(.text+0xfff): undefined reference to `HMETIS_PartRecursive'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: metis.o: b
ad reloc address 0x20 in section `.eh_frame'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link
failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
Makefile:5: recipe for target 'floorplan' failed
make: *** Error 1

dyc2007 发表于 2015-09-25 12:46

最后那个压缩包 defer.rar就是我下载的软件,make时出错,请各位指点,谢谢!

hevake_lcj 发表于 2015-09-26 19:43

不能使用它已经提供的静态库,除非你与作者的平台是完全一致的。
页: [1]
查看完整版本: 包含有makefile文件和.a文件的程序在Gcc下怎么编译? 谢谢!!!