加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – “make install” – 更改所有版本的输出目标

发布时间:2020-12-14 01:23:40 所属栏目:Linux 来源:网络整理
导读:我在一些机器上进行 Linux开发,主要是Slackware 13.37和Ubuntu 12.04.我正在测试和验证一些简单的makefile的结果,并想确认make install的输出.但是,在我继续测试之前,我想知道是否有一种可移植的方法来更改任何makefile的make install的默认输出目标. 我希望
我在一些机器上进行 Linux开发,主要是Slackware 13.37和Ubuntu 12.04.我正在测试和验证一些简单的makefile的结果,并想确认make install的输出.但是,在我继续测试之前,我想知道是否有一种可移植的方法来更改任何makefile的make install的默认输出目标.

我希望如果我可以以某种方式暂存我的输出,所以所有输出都转到,例如:

/test/bin
/test/lib
/test/usr/bin

代替:

/bin
/lib
/usr/bin

我知道在QNX开发环境中,例如,我可以设置环境变量,如QCONF_OVERRIDE和INSTALL_ROOT_nto,并保证没有makefile能够安装在除/ test子目录之外的任何地方.在Ubuntu上是否有类似的GCC机制,只需要在我的?/ .bashrc文件中设置一些环境变量?我通过命令行和VIM完成所有工作,所以我不担心漂亮的IDE不理解这些环境变量的情况,因为它们不在.kderc,.gnomerc或等效物中.

谢谢.

解决方法

简答:不.

答案很长:

没有办法为任何Makefile设置输出目的地;必须设计Makefile或构建系统的其他部分才能使其成为可能. make是一个非常简单的工具,因为它的目的是在各种平台上以相同的方式运行.因此,它实际上并不使用Makefile本身不存在的环境变量.这在环境污染和减少魔法方面都很好,但对实现预期目标却不利.

一些上下文:事情有点复杂,部分原因是,与QNX开发环境(基本上是同质的交叉编译环境)不同,大部分使用make的软件(我假设GNU make,但这适用于其他构建的版本是为异构构建和运行环境编写的 – 它可以设计为能够构建不同的发行版,操作系统(Linux,MS Windows,Mac OS X,FreeBSD等),甚至是硬件架构(x86,arm,mips,power,sparc,sh等).有时你是为同一个系统建造的,有时是为不同的系统建造的.不出所料,实际上并没有一种标准的方法可以在各种系统中定义安装路径.

Basile在他的回答中提到,对于使用GNU构建系统的程序,你可以使用./configure –prefix = / test.这通常适用于使用Autotools的简单程序.对于使用GNU Autotools的更复杂的程序,如果有更多不同的选项,通常会出现并发症:

>交叉编译?您可能希望将前缀设置为将在目标系统上安装的位置(可能是/usr/local),并使用make install DESTDIR = / test.
>您的构建系统是否期望在前缀目录中存在依赖关系,但您想在其他地方找到它们吗?更好地运行./configure –help以查看提供备用路径的其他选项(通常是–with-foo = / prefix / of / foo)

我相信我现在忘记了更多,但我认为你能得到这个.

请记住,仅适用于使用Autotools的项目.其他项目可能有其他系统(可能命名一个变量或编辑配置文件),所以最好的办法是阅读项目文档,然后失败,Makefile.好玩,嗯?

附:在环境中定义变量不同于将它们作为命令参数传递给make,即SPAM =“alot”make target与make target SPAM =“alot”不同 – 后者将覆盖makefile变量.请参阅Variables from the Environment上的GNU make docs.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读