linux下make与make install的区别

经常安装linux下面程序包的时候会下载一个tar.gz的文件,解压缩,然后make还有makeinstall什么的。想知道这对应windows/dos下面C++开发的什么步骤?
刚刚下载的源码包,make能成功,删掉解压的文件夹,重新解压,然后运行makeinstall则报错,是什么原因?
$makeinstall
pythonuwsgiconfig.py--buildinstall
usingprofile:buildconf/install.ini
Traceback(mostrecentcalllast):
File"uwsgiconfig.py",line1550,in
uc=uConf(bconf,is_cflags)
File"uwsgiconfig.py",line611,in__init__
self.config.readfp(open_profile(filename))
File"uwsgiconfig.py",line589,inopen_profile
returnopen(filename)
IOError:[Errno2]Nosuchfileordirectory:'buildconf/install.ini'
make:***[install]Error1
我看了'buildconf/install.ini'这个文件确实不存在,buildconf路径下面是一堆其他的ini文件。
qq_遁去的一_1
浏览 1685回答 2
2回答

撒科打诨

你有没有./configure很多源码要autoconf步骤才能执行make,看样子,buildconf/install.ini很有可能是configure生成的。make执行Makefile文件,Makefile和VisualStudiosln文件都是规则文件,告诉编译器如何生成可执行文件,有哪些依赖有哪些步骤。比如以下的Makefile:DESMakefileCC=clangCXX=clang++CFLAGS=-WallCXXFLAGS=-std=c++11LDFLAGS=-lmall:des.cppInmessionante.o$(CXX)$(CXXFLAGS)des.cppInmessionante.o-odes-lstdc++Inmessionante.cpp:$(CXX)$(CXXFLAGS)-cInmessionante.cppclean:-rm-rf*.odes首先make会执行第一个标签(或目标),也就是all.检查依赖,推导,比如Inmessionante.o并不存在,就检查有没有Inmessionante.o的生成步骤。有就执行这个步骤。否则就会失败。在Windows下也有make,比如Mingw移植过去的,还有Cygwin的make,语法和linux下面的一致,换行符不一样。还有VisualStudio自带的nmake,nmake语法有少许差异。make执行的主要是编译源文件,而makeinstall正是执行install标签(或目标),如果没有标签(或目标)的话,是不能安装的。install:todoinstall.Linux下主要是将二进制复制到prefix/bin,已经头文件到prefix/include等等。你的Makefile中,自己写好了install标签(或目标)是可以使用makeinstall,也可以打包makepackage.就跨平台而言,可以学习CMAKE,cmake的打包要好的多。在Windows下编码,如果有IDE,还是IDE简便些。sln文件IDE支持也更好。

三国纷争

make主要是编译,install主要是安装,也就是把文件复制到某些目录。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript