为了账号安全,请及时绑定邮箱和手机立即绑定

linux下make与make install的区别

linux下make与make install的区别

qq_遁去的一_1 2019-03-30 11:32:38
经常安装linux下面程序包的时候会下载一个tar.gz的文件,解压缩,然后make还有makeinstall什么的。想知道这对应windows/dos下面C++开发的什么步骤?刚刚下载的源码包,make能成功,删掉解压的文件夹,重新解压,然后运行makeinstall则报错,是什么原因?$makeinstallpythonuwsgiconfig.py--buildinstallusingprofile:buildconf/install.iniTraceback(mostrecentcalllast):File"uwsgiconfig.py",line1550,inuc=uConf(bconf,is_cflags)File"uwsgiconfig.py",line611,in__init__self.config.readfp(open_profile(filename))File"uwsgiconfig.py",line589,inopen_profilereturnopen(filename)IOError:[Errno2]Nosuchfileordirectory:'buildconf/install.ini'make:***[install]Error1我看了'buildconf/install.ini'这个文件确实不存在,buildconf路径下面是一堆其他的ini文件。
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

你有没有./configure很多源码要autoconf步骤才能执行make,看样子,buildconf/install.ini很有可能是configure生成的。
make执行Makefile文件,Makefile和VisualStudiosln文件都是规则文件,告诉编译器如何生成可执行文件,有哪些依赖有哪些步骤。
比如以下的Makefile:
DESMakefile
CC=clang
CXX=clang++
CFLAGS=-Wall
CXXFLAGS=-std=c++11
LDFLAGS=-lm
all:des.cppInmessionante.o
$(CXX)$(CXXFLAGS)des.cppInmessionante.o-odes-lstdc++
Inmessionante.cpp:
$(CXX)$(CXXFLAGS)-cInmessionante.cpp
clean:
-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支持也更好。
                            
查看完整回答
反对 回复 2019-03-30
?
三国纷争

TA贡献1804条经验 获得超7个赞

make主要是编译,install主要是安装,也就是把文件复制到某些目录。
                            
查看完整回答
反对 回复 2019-03-30
  • 2 回答
  • 0 关注
  • 1684 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信