Я использую Cygwin / Windows и пытаюсь создать собственный модуль для node.js. Я намерен использовать библиотеку OpenSSL. Я установил openssl из менеджера пакетов Cygwin.
В моем файле .cc есть следующие строки:
#include <openssl/dh.h>
и
DH* public_dh_key = DH_new();
Но когда я пытаюсь связать / скомпилировать его с node-waf configure build
, я получаю:
undefined reference to _DH_new
Изменить:
Часть сценария сборки:
def build(bld):
ppp= bld.new_task_gen('cxx', 'shlib', 'node_addon')
ppp.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall", "-L/usr/lib", "-lssl"]
...
(Я пытался добавить -lcrypto, но все еще получал тот же результат. Я также пробовал различные комбинации "-lssl32", "- lssleay32", "- llibeay32".)
Редактировать
Вывод сценария сборки:
$ node-waf configure build
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 node path : not found
Checking for node prefix : ok /usr/local
'configure' finished successfully (0.330s)
Waf: Entering directory `/usr/src/build'
[1/2] cxx: ppp.cc -> build/default/ppp_1.o
[2/2] cxx_link: build/default/ppp_1.o -> build/default/ppp.node build/default/libppp.dll.a
Creating library file: default/libppp.dll.a
default/ppp_1.o:/usr/src/build/../ppp.cc:289: undefined reference to `_HMAC'
collect2: ld returned 1 exit status
Waf: Leaving directory `/usr/src/build'
Build failed: -> task failed (err #1):
{task: cxx_link ppp_1.o -> ppp.node,libppp.dll.a}
Редактировать
У меня есть файл заголовка dh.h в usr / include / openssl
И у меня есть необходимые файлы (libssl32.dll, libeay32.dll и ssleay32.dll) в / usr / lib /
Ответ
jHackTheRipper ответил на это и получил за это кредит, но окончательный ответ скрыт в комментариях под его ответом. Подводя итог, можно сказать, что ваф мантра
obj.lib='crypto'