如何告诉`make`在哪里可以找到zlib.h?

时间:2020-06-21 21:30:18

标签: linux git makefile zlib

我试图在我没有root访问权限的CentOS-7服务器上安装Git。我设法获取了git的源代码,并执行了以下操作:

[som@jsClone git-1.8.3-rc1]make configure
<output omitted>
[som@jsClone git-1.8.3-rc1]./configure --prefix=$HOME/.local
<output omitted>
[som@jsClone git-1.8.3-rc1]$ make install
    CC credential-store.o
In file included from credential-store.c:1:0:
cache.h:19:18: fatal error: zlib.h: No such file or directory
 #include <zlib.h>
                  ^
compilation terminated.
make: *** [credential-store.o] Error 1
[som@jsClone git-1.8.3-rc1]$

因此,为解决该错误,我下载了zlib的源代码,并将其提取到文件夹$HOME/make_source/zlib中。所以目前它具有以下结构:

[som@jsClone ~]$ ls make_source/ -l
total 4820
drwxrwxr-x. 21 som  som    12288 Jun 22 02:44 git-1.8.3-rc1
-rwxr-xr-x.  1 root root 4440451 Jun 22 02:13 git-1.8.3-rc1.tar.gz
lrwxrwxrwx.  1 som  som       16 Jun 22 02:19 Shared -> /mnt/hgfs/Shared
drwxr-xr-x. 14 som  som     4096 Jun 22 02:26 zlib-1.2.11
-rwxrwxr-x.  1 som  som   467960 Jun 22 02:19 zlib-1.2.11.tar.xz

我成功安装了zlib:

[som@jsClone zlib-1.2.11]make configure
<output omitted>
[som@jsClone zlib-1.2.11]$ ./configure --prefix=$HOME/.local
Checking for gcc...
Checking for shared library support...
Building shared library libz.so.1.2.11 with gcc.
Checking for size_t... Yes.
Checking for off64_t... Yes.
Checking for fseeko... Yes.
Checking for strerror... Yes.
Checking for unistd.h... Yes.
Checking for stdarg.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.
[som@jsClone zlib-1.2.11]$ make install
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o adler32.o adler32.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o crc32.o crc32.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o deflate.o deflate.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o infback.o infback.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o inffast.o inffast.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o inflate.o inflate.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o inftrees.o inftrees.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o trees.o trees.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o zutil.o zutil.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o compress.o compress.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o uncompr.o uncompr.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzclose.o gzclose.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzlib.o gzlib.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzread.o gzread.c
gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzwrite.o gzwrite.c
ar rc libz.a adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/adler32.o adler32.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/crc32.o crc32.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/deflate.o deflate.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/infback.o infback.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/inffast.o inffast.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/inflate.o inflate.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/inftrees.o inftrees.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/trees.o trees.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/zutil.o zutil.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/compress.o compress.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/uncompr.o uncompr.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzclose.o gzclose.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzlib.o gzlib.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzread.o gzread.c
gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzwrite.o gzwrite.c
gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o libz.so.1.2.11 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo  -lc
rm -f libz.so libz.so.1
ln -s libz.so.1.2.11 libz.so
ln -s libz.so.1.2.11 libz.so.1
rm -f /home/som/.local/lib/libz.a
cp libz.a /home/som/.local/lib
chmod 644 /home/som/.local/lib/libz.a
cp libz.so.1.2.11 /home/som/.local/lib
chmod 755 /home/som/.local/lib/libz.so.1.2.11
rm -f /home/som/.local/share/man/man3/zlib.3
cp zlib.3 /home/som/.local/share/man/man3
chmod 644 /home/som/.local/share/man/man3/zlib.3
rm -f /home/som/.local/lib/pkgconfig/zlib.pc
cp zlib.pc /home/som/.local/lib/pkgconfig
chmod 644 /home/som/.local/lib/pkgconfig/zlib.pc
rm -f /home/som/.local/include/zlib.h /home/som/.local/include/zconf.h
cp zlib.h zconf.h /home/som/.local/include
chmod 644 /home/som/.local/include/zlib.h /home/som/.local/include/zconf.h
[som@jsClone zlib-1.2.11]$

$HOME/.local具有以下结构:

[som@jsClone ~]$ tree $HOME/.local
/home/som/.local
├── bin
├── include
│   ├── zconf.h
│   └── zlib.h
├── lib
│   ├── libz.a
│   ├── libz.so -> libz.so.1.2.11
│   ├── libz.so.1 -> libz.so.1.2.11
│   ├── libz.so.1.2.11
│   └── pkgconfig
│       └── zlib.pc
└── share
    └── man
        └── man3
            └── zlib.3

7 directories, 8 files

因此,现在已经安装了zlib,我尝试再次构建git,指定zlib.h文件的位置,但是它不起作用。

[som@jsClone git-1.8.3-rc1]$ make
    CC credential-store.o
In file included from credential-store.c:1:0:
cache.h:19:18: fatal error: zlib.h: No such file or directory
 #include <zlib.h>
                  ^
compilation terminated.
make: *** [credential-store.o] Error 1

我该如何解决?

0 个答案:

没有答案