源码编译安装git过程记录
工作上需要使用一台装有银河麒麟的操作系统的计算机。这台计算机cpu是arm架构的并且没有预装git。下面介绍我如何在这样一台预装软件较少的计算机上用源码安装git
目录
1 源码安装autoconf bison gettext texinfo flex
2 源码编译安装openssl
3 安装curl
3.1 下载curl-7.34.0,并解压
3.2 进入解压后的文件夹
3.3 依次执行如下指令:
4 安装expat 2.2.3
4.1下载expat 2.2.3
4.2 解压并进入解压后的文件夹
4.3 输入如下指令
5 安装tcl 8.6.13
5.1 下载tcl 8.6.13
5.2 解压并进入其unix子目录
5.3 输入如下指令:
6 生成git
6.1 下载一个git源码。我下载的是git 2.17
6.2 解压并进入该文件夹
6.3 执行如下操作:
6.4 建立软连接
1 源码安装autoconf bison gettext texinfo flex
具体安装步骤在以前的博客已经描述过,可参见
源码编译m4 autoconf 和 samba源码编译tcpdump过程记录
这里要注意,前面描述gettext的编译过程,仅仅生成了可执行文件。但是这里git编译还需要gettext的动态库文件。
所以这里gettext的编译办法与前面的描述有区别。假如已经编译了gettext,请按照如下步骤再次编译:
a) 生成gettext的动态库
./configure --enable-shared
make
sudo make install
这里注意,./configure --enable-shared 与没有--enable-shared的区别。前者配置了一个能产生so库的makefile
b) 上面一步生成了gettext的so文件libgettextlib-0.21.so,文件生成于/usr/local/lib。但是在需要调用此so库时,linux默认不会搜索这个路径。所以接下来要把此路径加入LD_LIBRARY_PATH中:
修改~/.bashrc,在其结尾添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
保存文件~/.bashrc
然后在命令行运行:
source ~/.bashrc
2 源码编译安装openssl
其实很多linux操作系统都已经预装了openssl。假如没有预装,请参考我的博客ubuntu编译安装openssl
3 安装curl
3.1 下载curl-7.34.0,并解压
3.2 进入解压后的文件夹
3.3 依次执行如下指令:
aclocal
autoconf
./configure --with-openssl
make
sudo make install
4 安装expat 2.2.3
4.1下载expat 2.2.3
4.2 解压并进入解压后的文件夹
4.3 输入如下指令
./configure
make
sudo make install
5 安装tcl 8.6.13
5.1 下载tcl 8.6.13
Download tk8.6.13-src.tar.gz (Tcl) (sourceforge.net)
5.2 解压并进入其unix子目录
5.3 输入如下指令:
./configure
make
sudo make install
sudo ln -s /usr/local/bin/tclsh8.6 /usr/bin/tclsh
这里解释一下最后一个指令。倒数第二条指令sudo make install已经把可执行程序安装到了/usr/local/bin底下。但是linux操作系统执行可执行文件时,默认不搜索这个路径。在前面的博客linux下共享so文件的方法_lunix安装 .so_金色熊族的博客-CSDN博客
我提到过linux搜索库文件的次序。这里面包括/usr/lib和/lib。类似的,linux搜索可执行文件的目录包括/usr/bin和/bin。为了能让tclsh正常在命令行运行,要在/usr/bin建立一个软连接,指向/usr/local/bin/tclsh8.6
6 生成git
6.1 下载一个git源码。我下载的是git 2.17
6.2 解压并进入该文件夹
6.3 执行如下操作:
make prefix=/usr/local/git all
sudo make prefix=/usr/local/git install
6.4 建立软连接
上一步把git可执行程序生成在/usr/local/git/bin路径下。正如编译tcl源码遇到的问题一样,/usr/local/git/bin不是linux默认搜索的路径。这里同样要建立一个软链接,完成安装:
sudo ln -s /usr/local/git/bin/git /usr/bin/git