Curl execution error: curl: (2) Failed initialization Upgrade NSS to 3.21

1. Description of the problem

insert image description here

When installing a certain security software online, there is no response when executing curl installation, and an error is reported when debugging: curl: (2) Failed initialization, NSS error 5961; Execute:curl -k -s -L 'https://10.24.1.2/agent/download?k=2677ac1f051d4f84ea75465fe441686f97032a193&group=1&protocol=0&root=true&runAccount=root&userAdd=false'

insert image description here

Normal initialization should look like this:

Initializing NSS with certpath: sql:/etc/pki/nssdb
*CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none

NSS (Network Security Services) is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Applications built with NSS can support SSL v3, TLS, PKCS#5, PKCS#7, PKCS#11, PKCS#12, S/MIME, X.509 v3 certificates, and other security standards. Like OpenSSL, it is a low-level cryptography library , including a TLS implementation. NSS is cross-platform , and many products use the NSS cryptographic library, such as Pidgin, Apache OpenOffice, LibreOffice, Red Hat Directory Server, Red Hat Certificate System, Apache's mod_nss module. NSS provides a complete software development package, including cryptographic library, API, command line tools, documentation set (API references, man help, sample code). Starting with NSS version 3.14, it is upgraded to the GPL-compatible MPL 2.0 license.

Reference: Get to know NSS first , official website

2. Debugging process

1) On-site environment version confirmation

rpm -q --requires curl
rpm -qa|grep curl
libcurl-7.19.7-37.el6_4.x86_64
python-pycurl-7.19.0-8.el6.x86_64

rpm -ql libcurl
/usr/lib64/libcurl.so.4
/usr/lib64/libcurl.so.4.1.1

ll /usr/lib64/libnss3.so 
-rwxr-xr-x. 1 root root 1296368 11月 24 2013 /usr/lib64/libnss3.so
ll /usr/lib64/libnssutil3.so 
-rwxr-xr-x. 1 root root 179416 11月 24 2013 /usr/lib64/libnssutil3.so
l /usr/lib64/libcurl.so.4
lrwxrwxrwx. 1 root root 16 2月   5 2018 /usr/lib64/libcurl.so.4 -> libcurl.so.4.1.1
rpm -qf /usr/lib64/libcurl.so.4.1.1
libcurl-7.19.7-37.el6_4.x86_64
rpm -qf /usr/lib64/libnssutil3.so 
nss-util-3.15.1-3.el6.x86_64

rpm -qf /usr/lib64/libnss3.so   //输出如下
nss-3.15.1-15.el6.x86_64
rpm -qf /usr/lib64/libnssutil3.so 
nss-util-3.15.1-3.el6.x86_64
You have new mail in /var/spool/mail/root
[root@localhost ~]# rpm -qf /usr/lib64/libnss3.so 
nss-3.15.1-15.el6.x86_64
[root@localhost ~]# rpm -q --requires nss-tools     #查看 nss-tools 也依赖于 nss 包
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
libc.so.6(GLIBC_2.4)(64bit)  
libdl.so.2()(64bit)  
libnspr4.so()(64bit)  
libnss3.so()(64bit)  
libnss3.so(NSS_3.10)(64bit)  
libnss3.so(NSS_3.11)(64bit)  
libnss3.so(NSS_3.11.7)(64bit)  
libnss3.so(NSS_3.12)(64bit)  
libnss3.so(NSS_3.12.1)(64bit)  
libnss3.so(NSS_3.12.6)(64bit)  
libnss3.so(NSS_3.12.9)(64bit)  
libnss3.so(NSS_3.13)(64bit)  
libnss3.so(NSS_3.14)(64bit)  
libnss3.so(NSS_3.14.1)(64bit)  
libnss3.so(NSS_3.15)(64bit)  
libnss3.so(NSS_3.2)(64bit)  
libnss3.so(NSS_3.3)(64bit)  
libnss3.so(NSS_3.4)(64bit)  
libnss3.so(NSS_3.5)(64bit)  
libnss3.so(NSS_3.6)(64bit)  
libnss3.so(NSS_3.7)(64bit)  
libnss3.so(NSS_3.8)(64bit)  
libnss3.so(NSS_3.9)(64bit)  
libnss3.so(NSS_3.9.2)(64bit)  
libnss3.so(NSS_3.9.3)(64bit)  
libnssutil3.so()(64bit)  
libnssutil3.so(NSSUTIL_3.12)(64bit)  
libnssutil3.so(NSSUTIL_3.12.7)(64bit)  
libnssutil3.so(NSSUTIL_3.15)(64bit)  
libplc4.so()(64bit)  
libplds4.so()(64bit)  
libpthread.so.0()(64bit)  
libpthread.so.0(GLIBC_2.2.5)(64bit)  
libsmime3.so()(64bit)  
libsmime3.so(NSS_3.10)(64bit)  
libsmime3.so(NSS_3.2)(64bit)  
libsmime3.so(NSS_3.3)(64bit)  
libsmime3.so(NSS_3.4)(64bit)  
libsmime3.so(NSS_3.6)(64bit)  
libsmime3.so(NSS_3.9.3)(64bit)  
libssl3.so()(64bit)  
libssl3.so(NSS_3.11.8)(64bit)  
libssl3.so(NSS_3.12.6)(64bit)  
libssl3.so(NSS_3.13.2)(64bit)  
libssl3.so(NSS_3.14)(64bit)  
libssl3.so(NSS_3.15)(64bit)  
libssl3.so(NSS_3.2)(64bit)  
libssl3.so(NSS_3.4)(64bit)  
libssl3.so(NSS_3.7.4)(64bit)  
libz.so.1()(64bit)  
nss(x86-64) = 3.15.1-15.el6
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)  
rpmlib(PayloadIsXz) <= 5.2-1

**#查看nss包含**
rpm -ql nss  //输出
/etc/pki/nssdb
/etc/pki/nssdb/cert8.db
/etc/pki/nssdb/key3.db
/etc/pki/nssdb/secmod.db
/usr/lib64/libnss3.so
/usr/lib64/libnssckbi.so
/usr/lib64/libnsspem.so
/usr/lib64/libsmime3.so
/usr/lib64/libssl3.so
/usr/lib64/nss/libnssckbi.so

#现场环境centos7
curl --version  //如下
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.36 zlib/1.2.7 libidn/1.28 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets 

#centos6.5环境输出如下
curl --version
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp 
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz 
#编译升级curl 后,NSS版本并没有对应升级,需要单独升级该库
curl 7.40.0 (x86_64-unknown-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp 
Features: IDN IPv6 Largefile NTLM SSL libz 

2) Error confirmation

insert image description here

3) Confirmed by the manufacturer, NSS version 3.21 or above is required
insert image description here
4) Debugging

openssl s_client --connect https://10.24.56.101 -msg  //输出
140057047963392:error:2008F002:BIO routines:BIO_lookup_ex:system lib:../crypto/bio/b_addr.c:724:Servname not supported for ai_socktype
connect:errno=0

Three, curl upgrade

1) Upgrade process

./configure --without-nss --with-ssl=/root/openssl-1.1.1d/build/crypto
#指定连接的证书
curl https://10.24.1.11/agent/ --cacert /etc/pki/tls/certs/ca-bundle.crt

2) NSS upgrade:

Note: NSS compiles and upgrades, NSS depends on NSPR, pay attention to the latter version; since NSS is a cross-platform library, built on many different platforms, with many options, it may be complicated to build. At present, the official maintains two build systems at the same time: the Make-based system and the gyp-based system. NSS requires a C and C++ compilation environment, but has minimal dependencies, including only the standard C and C++ libraries, and zlib. NSS and NSPR use Mercurial for source control like other Mozilla projects .

insert image description here

Related stuff: mozilla , build documentation , release notes

Component Description:

NSPR : A cross-platform bottom-level function library, the main function is to support as many operating systems as possible. NSS 3.x version currently supports 18 platforms, providing basic libraries such as I/O operations and network operation functions. NSPR is an independent project of Mozilla.

NSS : It mainly includes various cryptography libraries, and it includes a framework through which developers and OEMs can provide many patches, such as optimizing the performance of cryptography operations (SSL accelerators, instruction sets). NSS APIs are all called by C language (NSS itself is also developed by C language).

SSL&S/MIME : The application layer protocol based on NSS, the most important one is SSL.

The cryptographic algorithm standards and applications supported by NSS are as follows:

SSL&TLS, NSS plans to support TLS 1.3 protocol from NSS 3.29 version.

Various PKCS public cryptography standards, for details, please refer to Public Key Cryptography Standards (https://en.wikipedia.org/wiki/PKCS)

Cryptographic Message Syntax, used for S/MIME (encrypt and sign MIME data), Not much is known about the CMS standard and the implementation of S/MIME, so it is not covered in the book "In-depth Migration of HTTPS: From Principle to Practice".

X.509 v3 certificate, which is a very important part of the HTTPS protocol.

OCSP is a very effective supplementary protocol for certificates, which is used to verify the revocation status of certificates online (extensible, and also includes other states, such as certificate transparency information).

Various cryptographic algorithms, including RSA, DH, ECC, AES, SHA, HMAC, etc.

FIPS 186-2 compliant pseudorandom generator function.

#安装依赖环境
yum install mercurial git ninja-build python3-pip

#升级nss到3.21
mkdir nssproject && cd nssproject
wget no-check-certificate https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_21_RTM/src/nss-3.21-with-nspr-4.10.10.tar.gz
$ rpm -qa|grep nspr
nspr-4.10.0-1.el6.x86_64

wget https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_90_RTM/src/nss-3.90-with-nspr-4.35.tar.gz
#获取nss 和 nspr(Netscape Portable Runtime)源码的最新开发版,在 nss/lib 目录下包含所有导出 api 的源文件,其中 .def 后缀的文件包含对应的 api 列表,比如可以查看 lib/ssl/ssl.def,了解 ssl 协议包含的各种 api。
hg clone https://hg.mozilla.org/projects/nspr
hg clone https://hg.mozilla.org/projects/nss
或,需要先安装Git-cinnabar,它是一个与mercurial存储库交互的Git远程助手。它允许使用git从mercurial远程存储库进行克隆、拉取和推送。
git clone hg::https://hg.mozilla.org/projects/nspr
git clone hg::https://hg.mozilla.org/projects/nss

#编译,因nss 不使用 configure 脚本,所以需要配置不同的环境变量,比如在 linux 使用 shell,在 windows 上使用 Mozilla 提供的构建包。编译完成后,所有编译的文件全部保存在 dist 目录下(和 nss 目录同级)

#如果是src下载的综合包
$ tar -xzf nss-3.21-with-nspr-4.10.10.tar.gz
$ cd nss
$ ls nspr/
admin  build  config  configure  configure.in  lib  LICENSE  Makefile.in  pkg  pr  tools
$ ls nss/
automation  circle.yml  cmd  COPYING  coreconf  coverage  doc  external_tests  lib  Makefile  manifest.mn  pkg  tests  trademarks.txt
$ ls nss/lib/ #在 nss/lib 目录下包含所有导出 api 的源文件,其中 .def 后缀的文件包含对应的 api 列表
base    certhigh  crmf      dbm  freebl  libpkix   manifest.mn  pk11wrap  pkcs7  smime     sqlite  sysinit  zlib
certdb  ckfw      cryptohi  dev  jar     Makefile  nss          pkcs12    pki    softoken  ssl     util

#编译:nss 不使用 onfigure 脚本,所以需要配置不同的环境变量,总体过程还是比较麻烦的,更多参看:https://firefox-source-docs.mozilla.org/security/nss/build.html#source-code
$ BUILD_OPT=1   #其中,1表示编译为优化后的NSS版本,默认为0,表debug模式下的NSS版本
$ USE_64=1  	#其中,1表示以64位环境方式编译,默认值为0,表用32位方式
$ export BUILD_OPT
$ export USE_64
$ echo $BUILD_OPT
$ echo $USE_64

#备份NSS相关文件
rpm -ql nss    //备份如下文件
/etc/pki/nssdb
/etc/pki/nssdb/cert8.db
/etc/pki/nssdb/key3.db
/etc/pki/nssdb/secmod.db
/usr/lib64/libnss3.so
/usr/lib64/libnssckbi.so
/usr/lib64/libnsspem.so
/usr/lib64/libsmime3.so
/usr/lib64/libssl3.so
/usr/lib64/nss/libnssckbi.so

$ pwd
/home/nssproject
$ mkdir nss_backup
$ ls
nss-3.21  nss-3.21-with-nspr-4.10.10.tar.gz  nss_backup
$ cp -pr /etc/pki/nssdb ./nss_backup/
$ cp -pr /usr/lib64/libnss* ./nss_backup/
$ cp -pr /usr/lib64/libsmime3.so ./nss_backup/
$ cp -pr /usr/lib64/libssl3.so ./nss_backup/
$ ls ./nss_backup/
libnss3.so     libnss_compat.so  libnssdbm3.so  libnss_files.so   libnss_nisplus.so  libnsspem.so      libnssutil3.so  libssl3.so
libnssckbi.so  libnssdbm3.chk    libnss_dns.so  libnss_hesiod.so  libnss_nis.so      libnsssysinit.so  libsmime3.so    nssdb
$ ll ./nss_backup/
总用量 2196
-rwxr-xr-x. 1 root root 1296368 1124 2013 libnss3.so
lrwxrwxrwx. 1 root root      38 25 2018 libnssckbi.so -> /etc/alternatives/libnssckbi.so.x86_64
lrwxrwxrwx. 1 root root      30 26 2018 libnss_compat.so -> ../../lib64/libnss_compat.so.2
-rw-r--r--. 1 root root     899 1123 2013 libnssdbm3.chk
-rwxr-xr-x. 1 root root  162824 1123 2013 libnssdbm3.so
lrwxrwxrwx. 1 root root      27 26 2018 libnss_dns.so -> ../../lib64/libnss_dns.so.2
lrwxrwxrwx. 1 root root      29 26 2018 libnss_files.so -> ../../lib64/libnss_files.so.2
lrwxrwxrwx. 1 root root      30 26 2018 libnss_hesiod.so -> ../../lib64/libnss_hesiod.so.2
lrwxrwxrwx. 1 root root      31 26 2018 libnss_nisplus.so -> ../../lib64/libnss_nisplus.so.2
lrwxrwxrwx. 1 root root      27 26 2018 libnss_nis.so -> ../../lib64/libnss_nis.so.2
-rwxr-xr-x. 1 root root  150712 1124 2013 libnsspem.so
-rwxr-xr-x. 1 root root   10352 1124 2013 libnsssysinit.so
-rwxr-xr-x. 1 root root  179416 1124 2013 libnssutil3.so
-rwxr-xr-x. 1 root root  181168 1124 2013 libsmime3.so
-rwxr-xr-x. 1 root root  246584 1124 2013 libssl3.so
drwxr-xr-x. 2 root root    4096 25 2018 nssdb

$ cd nss_backup/
$ mkdir lib64_libnss
$ cp -pr /lib64/libnss* ./lib64_libnss/
$ ls ./lib64_libnss/
libnss_compat-2.12.so  libnss_dns-2.12.so  libnss_files-2.12.so  libnss_hesiod-2.12.so  libnss_nis-2.12.so      libnss_nisplus.so.2
libnss_compat.so.2     libnss_dns.so.2     libnss_files.so.2     libnss_hesiod.so.2     libnss_nisplus-2.12.so  libnss_nis.so.2

#编译
$ cd ../nss-3.21/nss
$ make nss_build_all -j4  #需要gcc 4.8 or greater。报错如下:

coreconf/Werror.mk:55: Unable to find gcc 4.8 or greater, disabling -Werror
mkdir -p ./../nspr/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ
cd ./../nspr/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ ; \
	 sh ../configure \
	--disable-debug --enable-optimize --enable-64bit \
	--with-dist-prefix='/home/nssproject/nss-3.21/nss/../dist/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ' \
	--with-dist-includedir='/home/nssproject/nss-3.21/nss/../dist/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/include'   //后续这2个目录未成功生成
cd coreconf; make export
cd coreconf; make libs
make[1]: Entering directory `/home/nssproject/nss-3.21/nss/coreconf'
make[1]: Entering directory `/home/nssproject/nss-3.21/nss/coreconf'
cd nsinstall; make export
cd nsinstall; make libs
cd nsinstall; make libs
make[2]: Entering directory `/home/nssproject/nss-3.21/nss/coreconf/nsinstall'
make[2]: Entering directory `/home/nssproject/nss-3.21/nss/coreconf/nsinstall'
make[2]: Nothing to be done for `export'.
make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/coreconf/nsinstall'
make[2]: Entering directory `/home/nssproject/nss-3.21/nss/coreconf/nsinstall'
gcc -o Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall.o -c -O2 -fPIC -DLINUX2_1 -m64 -Wall -DNSS_NO_GCC48 -pipe -ffunction-sections -fdata-sections -DLINUX -Dlinux -DHAVE_STRERROR -DXP_UNIX -UDEBUG -DNDEBUG -D_REENTRANT -DUSE_UTIL_DIRECTLY -DNO_NSPR_10_SUPPORT -DSSL_DISABLE_DEPRECATED_CIPHER_SUITE_NAMES -I../../../dist/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/include -I../../../dist/public/coreconf -I../../../dist/private/coreconf  nsinstall.c
gcc -o Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall.o -c -O2 -fPIC -DLINUX2_1 -m64 -Wall -DNSS_NO_GCC48 -pipe -ffunction-sections -fdata-sections -DLINUX -Dlinux -DHAVE_STRERROR -DXP_UNIX -UDEBUG -DNDEBUG -D_REENTRANT -DUSE_UTIL_DIRECTLY -DNO_NSPR_10_SUPPORT -DSSL_DISABLE_DEPRECATED_CIPHER_SUITE_NAMES -I../../../dist/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/include -I../../../dist/public/coreconf -I../../../dist/private/coreconf  nsinstall.c
mkdir: 无法创建目录"Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ": 文件已存在
make[2]: *** [Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/pathsub.o] 错误 1
make[2]: *** 正在等待未完成的任务....
gcc -o Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/pathsub.o -c -O2 -fPIC -DLINUX2_1 -m64 -Wall -DNSS_NO_GCC48 -pipe -ffunction-sections -fdata-sections -DLINUX -Dlinux -DHAVE_STRERROR -DXP_UNIX -UDEBUG -DNDEBUG -D_REENTRANT -DUSE_UTIL_DIRECTLY -DNO_NSPR_10_SUPPORT -DSSL_DISABLE_DEPRECATED_CIPHER_SUITE_NAMES -I../../../dist/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/include -I../../../dist/public/coreconf -I../../../dist/private/coreconf  pathsub.c
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for whoami... /usr/bin/whoami
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/coreconf/nsinstall'
make[1]: *** [libs] 错误 2
make[1]: Leaving directory `/home/nssproject/nss-3.21/nss/coreconf'
make: *** [libs] 错误 2
make: *** 正在等待未完成的任务....
gcc -o Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -O2 -fPIC -DLINUX2_1 -m64 -Wall -DNSS_NO_GCC48 -pipe -ffunction-sections -fdata-sections -DLINUX -Dlinux -DHAVE_STRERROR -DXP_UNIX -UDEBUG -DNDEBUG -D_REENTRANT -DUSE_UTIL_DIRECTLY -DNO_NSPR_10_SUPPORT -DSSL_DISABLE_DEPRECATED_CIPHER_SUITE_NAMES -I../../../dist/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/include -I../../../dist/public/coreconf -I../../../dist/private/coreconf  Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall.o Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/pathsub.o -m64   -lpthread  -ldl -lc

true -m 775 Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall ../../../dist/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/bin
checking whether we are cross compiling... make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/coreconf/nsinstall'
make[1]: Leaving directory `/home/nssproject/nss-3.21/nss/coreconf'
cd lib; make export
make[1]: Entering directory `/home/nssproject/nss-3.21/nss/lib'
cd util; make export
make[2]: Entering directory `/home/nssproject/nss-3.21/nss/lib/util'
Creating ../../../dist/public/nss
../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 base64.h ciferfam.h hasht.h nssb64.h nssb64t.h nsslocks.h nssilock.h nssilckt.h nssrwlk.h nssrwlkt.h nssutil.h pkcs11.h pkcs11f.h pkcs11p.h pkcs11t.h pkcs11n.h pkcs11u.h pkcs1sig.h portreg.h secasn1.h secasn1t.h seccomon.h secder.h secdert.h secdig.h secdigt.h secitem.h secoid.h secoidt.h secport.h secerr.h utilmodt.h utilrename.h utilpars.h utilparst.h ../../../dist/public/nss
Creating ../../../dist/private/nss
../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 verref.h templates.c ../../../dist/private/nss
no
make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/util'
checking for suffix of object files... cd freebl; make export
make[2]: Entering directory `/home/nssproject/nss-3.21/nss/lib/freebl'
../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 blapit.h shsign.h ecl/ecl-exp.h nsslowhash.h ../../../dist/public/nss
o
checking whether we are using the GNU C compiler... ../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 alghmac.h blapi.h hmacct.h secmpi.h secrng.h ec.h ecl/ecl.h ecl/ecl-curve.h ../../../dist/private/nss
make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/freebl'
cd sqlite; make export
make[2]: Entering directory `/home/nssproject/nss-3.21/nss/lib/sqlite'
../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 sqlite3.h ../../../dist/private/nss
make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/sqlite'
cd dbm; make export
yes
checking whether gcc accepts -g... make[2]: Entering directory `/home/nssproject/nss-3.21/nss/lib/dbm'
cd include; make export
yes
checking for gcc option to accept ISO C89... make[3]: Entering directory `/home/nssproject/nss-3.21/nss/lib/dbm/include'
Creating ../../../../dist/public/dbm
Creating ../../../../dist/private/dbm
../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 mcom_db.h ncompat.h winfile.h ../../../../dist/public/dbm
../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 hsearch.h page.h extern.h queue.h hash.h search.h ../../../../dist/private/dbm
make[3]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/dbm/include'
cd src; make export
make[3]: Entering directory `/home/nssproject/nss-3.21/nss/lib/dbm/src'
make[3]: Nothing to be done for `export'.
make[3]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/dbm/src'
make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/dbm'
none needed
checking for ranlib... ranlib
checking for as... cd softoken; make export
/usr/bin/as
checking for ar... /usr/bin/ar
checking for ld... /usr/bin/ld
checking for strip... /usr/bin/strip
checking for windres... no
checking how to run the C preprocessor... make[2]: Entering directory `/home/nssproject/nss-3.21/nss/lib/softoken'
cd legacydb; make export
cd legacydb; make private_export
make[3]: Entering directory `/home/nssproject/nss-3.21/nss/lib/softoken/legacydb'
make[3]: Entering directory `/home/nssproject/nss-3.21/nss/lib/softoken/legacydb'
gcc -E
There are no private exports.
make[3]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/softoken/legacydb'
There are no private exports.
make[3]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/softoken/legacydb'
../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 lgglue.h lowkeyi.h lowkeyti.h pkcs11ni.h softoken.h softoknt.h softkver.h sdb.h sftkdbt.h ../../../dist/private/nss
make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/softoken'
cd base; make export
make[2]: Entering directory `/home/nssproject/nss-3.21/nss/lib/base'
../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 nssbaset.h nssbase.h ../../../dist/public/nss
../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 baset.h base.h ../../../dist/private/nss
make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/base'
cd dev; make export
checking for gcc -pipe support... no
checking whether C compiler supports -fprofile-generate... make[2]: Entering directory `/home/nssproject/nss-3.21/nss/lib/dev'
../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 ckhelper.h devm.h devtm.h devt.h dev.h nssdevt.h nssdev.h ../../../dist/private/nss
make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/dev'
cd pki; make export
yes
checking for visibility(hidden) attribute... make[2]: Entering directory `/home/nssproject/nss-3.21/nss/lib/pki'
../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pki.h pkit.h nsspkit.h nsspki.h pkistore.h pki3hack.h pkitm.h pkim.h ../../../dist/private/nss
yes
checking for visibility pragma support... make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/pki'
cd libpkix; make export
yes
make[2]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix'
checking for perl5... no
checking for perl... /usr/bin/perl
cd include; make export
cd include; make private_export
make[3]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/include'
make[3]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/include'
../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix.h pkix_crlsel.h pkix_errorstrings.h pkix_results.h pkixt.h pkix_certsel.h pkix_params.h pkix_revchecker.h pkix_certstore.h pkix_pl_pki.h pkix_sample_modules.h pkix_checker.h pkix_pl_system.h pkix_util.h ../../../../dist/private/nss
../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix.h pkix_crlsel.h pkix_errorstrings.h pkix_results.h pkixt.h pkix_certsel.h pkix_params.h pkix_revchecker.h pkix_certstore.h pkix_pl_pki.h pkix_sample_modules.h pkix_checker.h pkix_pl_system.h pkix_util.h ../../../../dist/private/nss
make[3]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/include'
make[3]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/include'
cd pkix; make private_export
cd pkix; make export
make[3]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix'
make[3]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix'
cd certsel; make export
cd certsel; make private_export
cd certsel; make private_export
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/certsel'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/certsel'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/certsel'
checking for dlopen in -ldl... ../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_certselector.h pkix_comcertselparams.h ../../../../../dist/private/nss
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_certselector.h pkix_comcertselparams.h ../../../../../dist/private/nss
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_certselector.h pkix_comcertselparams.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/certsel'
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/certsel'
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/certsel'
cd crlsel; make private_export
cd crlsel; make export
cd crlsel; make private_export
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/crlsel'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/crlsel'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/crlsel'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_comcrlselparams.h pkix_crlselector.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/crlsel'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_comcrlselparams.h pkix_crlselector.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/crlsel'
cd checker; make private_export
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_comcrlselparams.h pkix_crlselector.h ../../../../../dist/private/nss
cd checker; make private_export
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/crlsel'
cd checker; make export
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/checker'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/checker'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/checker'
yes
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_basicconstraintschecker.h pkix_certchainchecker.h pkix_crlchecker.h pkix_ekuchecker.h pkix_expirationchecker.h pkix_namechainingchecker.h pkix_nameconstraintschecker.h pkix_ocspchecker.h pkix_policychecker.h pkix_revocationmethod.h pkix_revocationchecker.h pkix_signaturechecker.h pkix_targetcertchecker.h ../../../../../dist/private/nss
checking dlfcn.h usability... ../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_basicconstraintschecker.h pkix_certchainchecker.h pkix_crlchecker.h pkix_ekuchecker.h pkix_expirationchecker.h pkix_namechainingchecker.h pkix_nameconstraintschecker.h pkix_ocspchecker.h pkix_policychecker.h pkix_revocationmethod.h pkix_revocationchecker.h pkix_signaturechecker.h pkix_targetcertchecker.h ../../../../../dist/private/nss
symlink creation race: /home/nssproject/nss-3.21/dist/private/nss/pkix_targetcertchecker.h
nsinstall: symlink was attempted in working directory /home/nssproject/nss-3.21/nss/lib/libpkix/pkix/checker from ../../../nss/lib/libpkix/pkix/checker/pkix_targetcertchecker.h to /home/nssproject/nss-3.21/dist/private/nss/pkix_targetcertchecker.h.
: File exists
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/checker'
make[4]: *** [private_export] 已放弃
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/checker'
make[3]: *** [private_export] 错误 2
make[3]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix'
make[2]: *** [private_export] 错误 2
make[2]: *** 正在等待未完成的任务....
cd params; make private_export
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_basicconstraintschecker.h pkix_certchainchecker.h pkix_crlchecker.h pkix_ekuchecker.h pkix_expirationchecker.h pkix_namechainingchecker.h pkix_nameconstraintschecker.h pkix_ocspchecker.h pkix_policychecker.h pkix_revocationmethod.h pkix_revocationchecker.h pkix_signaturechecker.h pkix_targetcertchecker.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/checker'
cd params; make export
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/params'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/params'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_procparams.h pkix_trustanchor.h pkix_valparams.h pkix_resourcelimits.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/params'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_procparams.h pkix_trustanchor.h pkix_valparams.h pkix_resourcelimits.h ../../../../../dist/private/nss
cd results; make private_export
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/params'
yes
checking dlfcn.h presence... cd results; make export
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/results'
yes
checking for dlfcn.h... yes
checking whether gcc needs -traditional... make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/results'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_buildresult.h pkix_policynode.h pkix_valresult.h pkix_verifynode.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/results'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_buildresult.h pkix_policynode.h pkix_valresult.h pkix_verifynode.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/results'
cd store; make private_export
cd store; make export
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/store'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/store'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_store.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/store'
cd top; make private_export
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_store.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/store'
cd top; make export
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/top'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_build.h pkix_lifecycle.h pkix_validate.h ../../../../../dist/private/nss
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/top'
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/top'
cd util; make private_export
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_build.h pkix_lifecycle.h pkix_validate.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/top'
cd util; make export
no
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/util'
checking for dladdr... ../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_tools.h pkix_error.h pkix_logger.h pkix_list.h ../../../../../dist/private/nss
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/util'
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/util'
There are no private exports.
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_tools.h pkix_error.h pkix_logger.h pkix_list.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix/util'
make[3]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix'
cd pkix_pl_nss; make export
make[3]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss'
cd pki; make export
cd pki; make private_export
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/pki'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/pki'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_pl_basicconstraints.h pkix_pl_cert.h pkix_pl_certpolicyinfo.h pkix_pl_certpolicymap.h pkix_pl_certpolicyqualifier.h pkix_pl_crl.h pkix_pl_crldp.h pkix_pl_crlentry.h pkix_pl_date.h pkix_pl_generalname.h pkix_pl_infoaccess.h pkix_pl_nameconstraints.h pkix_pl_ocsprequest.h pkix_pl_ocspresponse.h pkix_pl_publickey.h pkix_pl_x500name.h pkix_pl_ocspcertid.h ../../../../../dist/private/nss
yes
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/pki'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_pl_basicconstraints.h pkix_pl_cert.h pkix_pl_certpolicyinfo.h pkix_pl_certpolicymap.h pkix_pl_certpolicyqualifier.h pkix_pl_crl.h pkix_pl_crldp.h pkix_pl_crlentry.h pkix_pl_date.h pkix_pl_generalname.h pkix_pl_infoaccess.h pkix_pl_nameconstraints.h pkix_pl_ocsprequest.h pkix_pl_ocspresponse.h pkix_pl_publickey.h pkix_pl_x500name.h pkix_pl_ocspcertid.h ../../../../../dist/private/nss
cd system; make export
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/pki'
cd system; make private_export
checking for gettid... make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/system'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/system'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_pl_common.h pkix_pl_mem.h pkix_pl_object.h pkix_pl_string.h pkix_pl_primhash.h pkix_pl_bigint.h pkix_pl_mutex.h pkix_pl_bytearray.h pkix_pl_lifecycle.h pkix_pl_oid.h pkix_pl_hashtable.h pkix_pl_rwlock.h pkix_pl_monitorlock.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/system'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_pl_common.h pkix_pl_mem.h pkix_pl_object.h pkix_pl_string.h pkix_pl_primhash.h pkix_pl_bigint.h pkix_pl_mutex.h pkix_pl_bytearray.h pkix_pl_lifecycle.h pkix_pl_oid.h pkix_pl_hashtable.h pkix_pl_rwlock.h pkix_pl_monitorlock.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/system'
cd module; make export
cd module; make private_export
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/module'
make[4]: Entering directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/module'
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_pl_aiamgr.h pkix_pl_colcertstore.h pkix_pl_httpcertstore.h pkix_pl_httpdefaultclient.h pkix_pl_ldapt.h pkix_pl_ldapcertstore.h pkix_pl_ldapresponse.h pkix_pl_ldaprequest.h pkix_pl_ldapdefaultclient.h pkix_pl_nsscontext.h pkix_pl_pk11certstore.h pkix_pl_socket.h ../../../../../dist/private/nss
../../../../coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall -R -m 444 pkix_pl_aiamgr.h pkix_pl_colcertstore.h pkix_pl_httpcertstore.h pkix_pl_httpdefaultclient.h pkix_pl_ldapt.h pkix_pl_ldapcertstore.h pkix_pl_ldapresponse.h pkix_pl_ldaprequest.h pkix_pl_ldapdefaultclient.h pkix_pl_nsscontext.h pkix_pl_pk11certstore.h pkix_pl_socket.h ../../../../../dist/private/nss
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/module'
make[4]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss/module'
There are no private exports.
make[3]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix/pkix_pl_nss'
make[2]: Leaving directory `/home/nssproject/nss-3.21/nss/lib/libpkix'
make[1]: *** [export] 错误 2
make[1]: Leaving directory `/home/nssproject/nss-3.21/nss/lib'
make: *** [export] 错误 2
no
checking for lchown... yes
checking for setpriority... yes
checking for strerror... yes
checking for syscall... yes
checking for pthread_create in -lpthreads... no
checking for pthread_create in -lpthread... yes
checking whether gcc accepts -pthread... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config/Makefile
config.status: creating config/autoconf.mk
config.status: creating config/nsprincl.mk
config.status: creating config/nsprincl.sh
config.status: creating config/nspr-config
config.status: creating config/nspr.pc
config.status: creating lib/Makefile
config.status: creating lib/ds/Makefile
config.status: creating lib/libc/Makefile
config.status: creating lib/libc/include/Makefile
config.status: creating lib/libc/src/Makefile
config.status: creating lib/tests/Makefile
config.status: creating pkg/Makefile
config.status: creating pr/Makefile
config.status: creating pr/include/Makefile
config.status: creating pr/include/md/Makefile
config.status: creating pr/include/obsolete/Makefile
config.status: creating pr/include/private/Makefile
config.status: creating pr/src/Makefile
config.status: creating pr/src/io/Makefile
config.status: creating pr/src/linking/Makefile
config.status: creating pr/src/malloc/Makefile
config.status: creating pr/src/md/Makefile
config.status: creating pr/src/md/unix/Makefile
config.status: creating pr/src/memory/Makefile
config.status: creating pr/src/misc/Makefile
config.status: creating pr/src/threads/Makefile
config.status: creating pr/tests/Makefile
config.status: creating pr/tests/dll/Makefile
config.status: creating pkg/linux/Makefile
config.status: creating pr/src/pthreads/Makefile
config.status: executing default commands

#   

$ cd ../
$ ls   #会产生dist目录,所有编译的文件全部保存在 dist 目录下
dist  nspr  nss
$ find / -name Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ
/home/nssproject/nss-3.21/nspr/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ
/home/nssproject/nss-3.21/nss/coreconf/nsinstall/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ

$ ls ./dist/Linux2.6_x86_64_cc_glibc_PTH_64_OPT.OBJ/
bin  include  lib

#编译后,直接运行命令行会报错的,需要 export 一些目录
export LD_LIBRARY_PATH='/root/nssproject/dist/Linux3.13_x86_64_cc_glibc_PTH_64_OPT.OBJ/lib:'

Guess you like

Origin blog.csdn.net/ximenjianxue/article/details/131212489