1. 下载
wget https://www.kernel.org/pub/software/scm/git/git-2.43.0.tar.gz
编译从github下载的压缩包可能会报错,建议从git官网下载压缩包。
https://www.kernel.org/
2. 编译
tar -zxvf git-2.34.5.tar.gz
cd git-2.34.5
make prefix=/usr/local all
sudo make prefix=/usr/local install
没有sudo权限,可以指定一个prefix路径
./configure prefix=/***/***/***
make prefix=/***/***/*** all
make prefix=/***/***/*** install
git --version 验证版本
https://blog.csdn.net/weixin_54227557/article/details/136166143
以下chatgpt生成
./configure 命令的作用
./configure --prefix=/usr/local
是一个用于配置软件包构建的命令。在使用 make
和 make install
编译和安装软件包之前,configure
脚本会检查你的系统环境,并生成合适的 Makefile 文件。
命令解析
./configure
:运行当前目录下的configure
脚本。这个脚本会检查系统的编译器、库和其他依赖项,以确保软件可以正确构建。--prefix=/usr/local
:指定软件的安装路径。在这里,/usr/local
是安装目录。使用这个选项后,所有生成的文件(如二进制文件、库文件、配置文件等)将安装到/usr/local
目录下的相应位置。
具体作用
- 配置编译选项:
configure
脚本会检测你的系统,并生成适当的配置选项,以便后续的编译过程能顺利进行。 - 设置安装目录:通过
--prefix
选项,你可以指定软件安装的位置。默认情况下,大多数软件会安装到/usr/local
,这可以避免与系统包管理器安装的软件发生冲突。 - 生成 Makefile:
configure
脚本会根据检测结果生成一个或多个 Makefile 文件,这些文件包含了如何编译和安装软件的详细指令。
常见使用场景
-
安装到默认目录:如果你希望将软件安装到
/usr/local
,可以直接使用上述命令。./configure --prefix=/usr/local make make install
-
安装到用户目录:如果你没有管理员权限,或者你希望将软件安装到用户目录,可以指定一个用户拥有的目录,例如
$HOME/local
。./configure --prefix=$HOME/local make make install
-
自定义安装目录:在某些情况下,你可能希望将软件安装到特定的目录,以便与其他软件隔离。
./configure --prefix=/opt/mysoftware make make install
总结
./configure --prefix=/usr/local
是一个配置软件构建过程的重要步骤,它通过检查系统环境并生成适当的 Makefile 文件,为后续的编译和安装过程做好准备。通过指定 --prefix
选项,你可以灵活地控制软件的安装位置。
make prefix all install有什么区别
这两条 make
命令的主要区别在于它们执行的目标不同:一个是编译所有目标,另一个是安装编译后的目标。
命令解析
-
make prefix=/***/***/*** all
:- 作用:编译所有目标。
- 解释:
make
命令会读取当前目录下的 Makefile 文件,并执行all
目标。all
通常包含编译项目所需的所有步骤,如编译源代码和生成可执行文件。 - prefix=///*:这是传递给 Makefile 的变量,用于指定安装目录的位置。不过在编译阶段,这个变量通常不会影响编译过程,主要影响的是安装路径。
-
make prefix=/***/***/*** install
:- 作用:安装编译后的目标。
- 解释:
make
命令会执行install
目标,通常包括将编译好的文件复制到指定的安装目录。例如,二进制文件、库文件和配置文件等会被复制到由prefix
指定的目录下。 - prefix=///*:在安装阶段,这个变量指定了文件的安装路径。它决定了安装文件的位置。
区别总结
-
make all
:- 执行编译过程,生成所有目标文件。
- 不会安装文件。
prefix
变量在这个阶段通常没有影响。
-
make install
:- 执行安装过程,将编译好的文件复制到指定的安装目录。
prefix
变量在这个阶段决定了文件的安装位置。
示例
假设你有一个软件项目,使用 Makefile 进行管理,包含以下目标:
all: myprogrammyprogram: myprogram.cgcc -o myprogram myprogram.cinstall: myprogrammkdir -p $(prefix)/bincp myprogram $(prefix)/bin
运行这两条命令:
make prefix=/usr/local all
make prefix=/usr/local install
make prefix=/usr/local all
:编译myprogram.c
,生成myprogram
可执行文件。make prefix=/usr/local install
:将myprogram
可执行文件复制到/usr/local/bin
目录。
总结
make all
用于编译项目。make install
用于安装编译后的文件。prefix
变量通常在安装阶段起作用,指定文件的安装路径。
git commit --amend --no-edit 是什么命令
git commit --amend --no-edit
是一个 Git 命令,用于修改上一次提交。具体来说,它会让你更新上一次提交的内容而不修改提交消息。以下是该命令的详细说明:
命令解释
git commit --amend
:该命令用于修改最近的一次提交。执行此命令时,你可以更改提交的内容,也可以修改提交消息。默认情况下,Git 会打开一个编辑器,允许你编辑提交消息。--no-edit
:这是一个选项,告诉 Git 不要打开编辑器,也不要更改提交消息。它保留了原有的提交消息,只更新提交的内容。
使用场景
-
修正错误:
- 如果你在上一次提交后发现遗漏了一些文件或需要对代码进行微小的修正,可以使用此命令将这些更改包含在上一次提交中,而不需要创建新的提交。
-
保持提交历史整洁:
- 使用
--amend
可以让你的提交历史看起来更整洁,因为它避免了创建多个小的修正提交。
- 使用
示例
假设你刚刚提交了一个更改,但忘记包含某些文件或想要修改已经提交的文件:
-
进行更改:
- 对需要修改的文件进行更改,然后添加到暂存区(staging area)。
git add <file1> <file2>
-
使用
--amend --no-edit
更新提交:- 使用
git commit --amend --no-edit
将这些更改包含在上一次提交中,而不修改提交消息。
git commit --amend --no-edit
- 使用
注意事项
- 安全性:在公共分支上使用
--amend
需要小心,因为它会更改提交历史。如果其他人已经基于你的上一次提交进行了工作,那么修改该提交可能会导致冲突和混乱。因此,这个命令通常在处理自己的分支或本地工作时使用。
总结
git commit --amend --no-edit
是一个非常有用的命令,允许你在不更改提交消息的情况下修改最近的一次提交的内容。这在修正错误和保持提交历史整洁方面非常有用,但在使用时需要注意其对提交历史的影响,特别是在公共分支上使用时。