一个关于MinGW编译的问题,谁能帮帮我?

hjzhlc 2014-04-23 11:28:07
我对C/C++不是很了解,最近在网上下载了个源码(http://www.fon.hum.uva.nl/praat/download_sources.html)按照作者说的在Windows平台下用WinGW进行编译,我用“mingw32-make”编译,但每次编译到一定地方的时候就会报如下的错误:

touch libgsl.a
process_begin: CreateProcess(NULL, touch libgsl.a, ...) failed.
make (e=2): 系统找不到指定的文件。
make[1]: *** [libgsl.a] Error 2
make[1]: Leaving directory `C:/praat/external/gsl'
make: *** [all] Error 2


按照上面说的,运行到Makefile文件里的“touch libgsl.a”这句的时候找不到“libgsl.a”这个文件,我认为这是个什么东西的运行库,后来从网上找了个GSL安装包,找到libgsl.a把文件路径写进去,这段是编译过去了,但后面还有“libglpk.a”,“libdwsys.a”……等等……我就不知道这些*.a文件从哪来?都是从其他插件来?但网上找不到。是程序编译后自己生成的?但我编译过程中没见有生成。还是MinGW我哪里用得不对?

望高手能指导一下如何编译。


...全文
491 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjzhlc 2014-04-23
  • 打赏
  • 举报
回复
这个是Makefile的代码内容:

include ../../makefile.defs

CPPFLAGS = -I ../../sys -I ../../dwsys

OBJECTS = gsl_blas__blas.o gsl_block__block.o gsl_block__file.o \
   gsl_block__init.o gsl_bspline__bspline.o gsl_cblas__caxpy.o \
   gsl_cblas__ccopy.o gsl_cblas__cdotc_sub.o gsl_cblas__cdotu_sub.o \
   ……此处省略N个o文件列表

.PHONY: all clean

all: libgsl.a

clean:
	$(RM) $(OBJECTS)
	$(RM) libgsl.a

libgsl.a: $(OBJECTS)
	touch libgsl.a
	rm libgsl.a
	$(AR) cq libgsl.a $(OBJECTS)
	$(RANLIB) libgsl.a

$(OBJECTS): *.h
hjzhlc 2014-04-23
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
将以下内容保存到c:\windows\touch.bat文件中,再试试。
@echo off
if "%1"=="" goto no1
if exist %1 goto touch
@echo Can not find file:%1
goto eee
:touch
copy /b %1+,, >NUL
@echo OK to change datetime of file %1 to %date% %time%
goto eee
:no1
@echo TOUCH - Change datetime of file to NOW.
@echo Use: TOUCH filename.ext
:eee
这样的话运行到“rm libgsl.a”这行又报错了。

make -C external/gsl
make[1]: Entering directory `C:/praat/external/gsl'
touch libgsl.a
Can not find file:libgsl.a
rm libgsl.a
process_begin: CreateProcess(NULL, rm libgsl.a, ...) failed.
make (e=2): 系统找不到指定的文件。
make[1]: *** [libgsl.a] Error 2
make[1]: Leaving directory `C:/praat/external/gsl'
make: *** [all] Error 2
赵4老师 2014-04-23
  • 打赏
  • 举报
回复
将以下内容保存到c:\windows\touch.bat文件中,再试试。
@echo off
if "%1"=="" goto no1
if exist %1 goto touch
@echo Can not find file:%1
goto eee
:touch
copy /b %1+,, >NUL
@echo OK to change datetime of file %1 to %date% %time%
goto eee
:no1
@echo TOUCH - Change datetime of file to NOW.
@echo Use: TOUCH filename.ext
:eee
hjzhlc 2014-04-23
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
将以下内容保存到c:\windows\rm.bat文件中,再试试。
del "%1"
另外我怀疑你mingw32环境没安装好或path环境变量没添加指向mingw32提供的bin目录。
环境变量肯定没问题了,要不“mingw32-make”命令也不可能运行得起来。 现在这两句都没报错了。不过编译还是有点问题,我自己再看看。非常感谢!
赵4老师 2014-04-23
  • 打赏
  • 举报
回复 1
将以下内容保存到c:\windows\rm.bat文件中,再试试。
del "%1"
另外我怀疑你mingw32环境没安装好或path环境变量没添加指向mingw32提供的bin目录。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧