Friday, May 10, 2024
 Popular · Latest · Hot · Upcoming
58
rated 0 times [  63] [ 5]  / answers: 1 / hits: 31510  / 14 Years ago, wed, october 20, 2010, 12:00:00

I have installed libssl-dev and openssl but I get this when I install node.js:



> ./configure && make && make install                                                                                          
Checking for program g++ or c++ : /usr/bin/g++
Checking for program cpp : /usr/bin/cpp
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for g++ : ok
Checking for program gcc or cc : /usr/bin/gcc
Checking for gcc : ok
Checking for library dl : yes
Checking for openssl : not found
Checking for function SSL_library_init : yes
Checking for header openssl/crypto.h : yes
Checking for library rt : yes
Checking for fdatasync(2) with c++ : yes


Openssl is not found. But node was installed successfully.



Why isn't openssl found? Anyone has the same problem?


More From » ssl

 Answers
82

This isn't exactly a programming question. Still...



Quick answer



The installer checks for OpenSSL support in two ways. The first check failed for you, the second succeeded. For me, the first check succeeded (see below). Either way works.



Longer answer



Here's what I got when I built it:



$ sudo apt-get install libssl-dev
$ ./configure
Checking for program g++ or c++ : /usr/bin/g++
Checking for program cpp : /usr/bin/cpp
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for g++ : ok
Checking for program gcc or cc : /usr/bin/gcc
Checking for gcc : ok
Checking for library dl : yes
Checking for openssl : yes
Checking for library rt : yes
<---snip--->


Presuming you downloaded node.js v0.2.3 from http://nodejs.org/, the configuration is mostly done by waf in the file wscript.



The relevant lines are:



  if not Options.options.without_ssl:
if conf.check_cfg(package='openssl',
args='--cflags --libs',
uselib_store='OPENSSL'):
Options.options.use_openssl = conf.env[USE_OPENSSL] = True
conf.env.append_value(CPPFLAGS, -DHAVE_OPENSSL=1)
else:
libssl = conf.check_cc(lib='ssl',
header_name='openssl/ssl.h',
function_name='SSL_library_init',
libpath=['/usr/lib', '/usr/local/lib', '/opt/local/lib', '/usr/sfw/lib'],
uselib_store='OPENSSL')
libcrypto = conf.check_cc(lib='crypto',
header_name='openssl/crypto.h',
uselib_store='OPENSSL')


The first part is simple enough. It runs pkgconfig. Here is what happens when I do the equivalent by hand:



 $ pkg-config openssl --cflags --libs
-lssl -lcrypto


The second set of checks is run if pkg-config fails to confirm the package is installed. In that case, it tries to compile a trivial gcc program which checks for the existence of functions in libcrypt and libssl. If those both succeed, installation continues. If one of them fails, there's a fatal error, and the script bombs out.


[#95253] Monday, October 18, 2010, 14 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
adam

Total Points: 363
Total Questions: 102
Total Answers: 104

Location: Burkina Faso
Member since Thu, Dec 15, 2022
1 Year ago
;