在 fedora 19 64 位上,我应该为编译选项 -lz 和 -lcrypto 安装哪些软件包?我正在尝试静态编译 git 。这是完整的错误消息:
[rubenroy@localhost git]$ make prefix=/home/rubenroy/git-static CFLAGS="${CFLAGS} -static"
LINK git-credential-store
/usr/bin/ld: cannot find -lz
/usr/bin/ld: cannot find -lcrypto
libgit.a(path.o): In function `getpw_str':
path.c:(.text+0xd0b): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
libgit.a(wrapper.o): In function `xgetpwuid_self':
wrapper.c:(.text+0xeac): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libpthread.a(libpthread.o): In function `sem_open':
(.text+0x67fb): warning: the use of `mktemp' is dangerous, better use `mkstemp'
libgit.a(ident.o): In function `add_domainname':
ident.c:(.text+0x3cc): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
collect2: error: ld returned 1 exit status
make: *** [git-credential-store] Error 1
[rubenroy@localhost git]$
编辑:现在已经安装了库,但编译时仍然出现错误:
[rubenroy@localhost git]$ make prefix=/home/rubenroy/git-static CFLAGS="${CFLAGS} -static"
LINK git-credential-store
libgit.a(path.o): In function `getpw_str':
path.c:(.text+0xd0b): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
libgit.a(wrapper.o): In function `xgetpwuid_self':
wrapper.c:(.text+0xeac): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libpthread.a(libpthread.o): In function `sem_open':
(.text+0x67fb): warning: the use of `mktemp' is dangerous, better use `mkstemp'
libgit.a(ident.o): In function `add_domainname':
ident.c:(.text+0x3cc): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x116): undefined reference to `dlopen'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x12d): undefined reference to `dlsym'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x142): undefined reference to `dladdr'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x14e): undefined reference to `dlclose'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(fips.o): In function `FIPSCHECK_verify':
(.text+0x1a6): undefined reference to `dlclose'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
(.text+0x11): undefined reference to `dlopen'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
(.text+0x24): undefined reference to `dlsym'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
(.text+0x2f): undefined reference to `dlclose'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
(.text+0x334): undefined reference to `dlsym'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
(.text+0x3f2): undefined reference to `dlerror'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
(.text+0x464): undefined reference to `dlsym'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
(.text+0x522): undefined reference to `dlerror'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
(.text+0x589): undefined reference to `dlopen'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
(.text+0x5ed): undefined reference to `dlclose'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
(.text+0x625): undefined reference to `dlerror'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_pathbyaddr':
(.text+0x6b1): undefined reference to `dladdr'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_pathbyaddr':
(.text+0x711): undefined reference to `dlerror'
/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
(.text+0x772): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
make: *** [git-credential-store] Error 1
答案1
您正在寻找具有相应静态库(即libxx.a
文件)的包。通常它们与带有共享库+后缀的包具有相同的名称-static
。在这种情况下zlib-static
和openssl-static
.
$ repoquery --list zlib-static.x86_64
/usr/lib64/libz.a
/usr/share/doc/zlib-static-1.2.7
/usr/share/doc/zlib-static-1.2.7/README
$ repoquery --list openssl-static.x86_64
/usr/lib64/libcrypto.a
/usr/lib64/libssl.a