Posted at

【学習メモ】curl-7.59.0のインストール後はldconfigが必要

More than 1 year has passed since last update.


まとめ

curl(7.59.0)をソースインストールしたら、ldconfigが必要。


作業手順


環境

CentOS6.9 Basic Server + Development(Additional Development, Development tools, Server Platform Development)


Opensslのインストール

wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz ;\

tar xf openssl-1.0.2o.tar.gz ;\
chown -R root. openssl-1.0.2o ;\
cd openssl-1.0.2o ;\
./config --prefix=/usr/local/openssl-1.0.2o shared -fPIC ;\
make -j2 && make test && make install ;\
cd /usr/local ;\
ln -s openssl-1.0.2o openssl ;\
cd openssl ;\
ln -s lib lib64 ;\
echo -e "/usr/local/openssl-1.0.2o/lib64\n/usr/local/openssl-1.0.2o/lib\n/usr/local/lib64\n/usr/local/lib" >> /etc/ld.so.conf


curlのインストール

wget https://curl.mirror.anstey.ca/curl-7.59.0.tar.gz ;\

tar xf curl-7.59.0.tar.gz ;\
chown -R root. curl-7.59.0 ;\
cd curl-7.59.0 ;\
./configure --with-ssl=/usr/local/openssl-1.0.2o --enable-libcurl-option ;\
make -j2 && make install


  • make testは失敗した。rootでやるのは良くないみたい?


curlで失敗する

# curl --version

curl 7.59.0 (x86_64-pc-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Release-Date: 2018-03-14
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp
Features: IDN IPv6 Largefile NTLM SSL libz
# curl yahoo.co.jp
curl: (2) Failed initialization

初期化って何?


確認したこと


共有ライブラリの依存関係の確認

特に問題なさそうな結果。

# which curl                                                                                 

/usr/local/bin/curl
# ldd /usr/local/bin/curl
linux-vdso.so.1 => (0x00007ffdb05d9000)
libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00007f457f328000)
libssl.so.1.0.0 => /usr/local/openssl-1.0.2o/lib64/libssl.so.1.0.0 (0x00007f457f0b8000)
libcrypto.so.1.0.0 => /usr/local/openssl-1.0.2o/lib64/libcrypto.so.1.0.0 (0x00007f457ec81000)
libz.so.1 => /lib64/libz.so.1 (0x00007f457ea6b000)
librt.so.1 => /lib64/librt.so.1 (0x00007f457e863000)
libc.so.6 => /lib64/libc.so.6 (0x00007f457e4cf000)
libidn.so.11 => /lib64/libidn.so.11 (0x00007f457e29d000)
libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007f457e04c000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f457de08000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f457db21000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f457d8f5000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f457d6f1000)
libssl3.so => /usr/lib64/libssl3.so (0x00007f457d4a4000)
libsmime3.so => /usr/lib64/libsmime3.so (0x00007f457d278000)
libnss3.so => /usr/lib64/libnss3.so (0x00007f457cf35000)
libnssutil3.so => /usr/lib64/libnssutil3.so (0x00007f457cd08000)
libplds4.so => /lib64/libplds4.so (0x00007f457cb04000)
libplc4.so => /lib64/libplc4.so (0x00007f457c8ff000)
libnspr4.so => /lib64/libnspr4.so (0x00007f457c6c1000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f457c4a4000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f457c2a0000)
libssh2.so.1 => /usr/lib64/libssh2.so.1 (0x00007f457c078000)
/lib64/ld-linux-x86-64.so.2 (0x00007f457f57d000)
liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007f457be69000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f457bc4f000)
libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00007f457ba35000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f457b82a000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f457b627000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f457b3bb000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f457afd6000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f457ad9f000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f457ab80000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f457a97d000)


コンパイラのバージョンと、サポートしているバージョンの確認。

# gcc --version ; g++ --version

gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

# grep gcc /usr/local/src/curl-7.59.0/*

(略)
# less /usr/local/src/curl-7.59.0/CHANGES
(略)
Marcel Raad (21 Jun 2017)
- lib1521: fix missing-variable-declarations clang warnings

Declare TU-local variables static.

- travis: enable typecheck-gcc warnings

- switch debug and release configurations so that we get an optimized
build with GCC 4.3+ as required by typecheck-gcc
- enable warnings-as-errors for release builds
(which have warnings disabled)
(略)

gccでgrepしてみるとGCCのバージョンに関して書いてある。

4.3以上が必要みたいだけど、バージョン的には問題なさそう。


そして

なんとなくldconfigしたらcurlできるようになった。