Ошибка компоновщика с Hadoop Pipes - PullRequest
1 голос
/ 19 мая 2011

Hadoop n00b здесь, только что начал играть с Hadoop Pipes. Я получаю ошибки компоновщика при компиляции простого примера WordCount с использованием hadoop-0.20.203 (самая последняя версия), который не появился для того же кода в hadoop-0.20.2

Ошибки компоновщика в форме: неопределенная ссылка на `EVP_sha1 'в HadoopPipes.cc.

EVP_sha1 (и все неопределенные ссылки, которые я получаю) являются частью библиотеки openssl, которую использует HadoopPipes.cc из hadoop-0.20.203, а hadoop-0.20.2 нет.

Я пытался настроить свой make-файл для связи с библиотеками ssl, но мне все еще не повезло. Любые идеи очень приветствуются. Спасибо!

PS, вот мой текущий make-файл:

CC = g++

HADOOP_INSTALL = /usr/local/hadoop-0.20.203.0

SSL_INSTALL = /usr/local/ssl

PLATFORM = Linux-amd64-64

CPPFLAGS = -m64 -I$(HADOOP_INSTALL)/c++/$(PLATFORM)/include -I$(SSL_INSTALL)/include

WordCount: WordCount.cc

    $(CC) $(CPPFLAGS) $< -Wall -Wextra -L$(SSL_INSTALL)/lib -lssl -lcrypto -L$(HADOOP_INSTALL)/c++/$(PLATFORM)/lib -lhadooppipes -lhadooputils -lpthread -g -O2 -o $@

Фактическую программу, которую я использую, можно найти по адресу http://cs.smith.edu/dftwiki/index.php/Hadoop_Tutorial_2.2_--_Running_C%2B%2B_Programs_on_Hadoop

Ответы [ 2 ]

8 голосов
/ 19 января 2012

У меня была такая же проблема: ответ заключается в добавлении -lcrypto в командную строку компиляции:

http://grokbase.com/p/hadoop.apache.org/common-user/2011/06/re-linker-errors-with-hadoop-pipes/09zqdt5grdudu7no7q6k3gfcynpy

Вот патч, исправляющий процесс сборки:

diff --git src/examples/pipes/Makefile.in src/examples/pipes/Makefile.in
index 17efa2a..1d8af8e 100644
--- src/examples/pipes/Makefile.in
+++ src/examples/pipes/Makefile.in
@@ -233,7 +233,7 @@ AM_CXXFLAGS = -Wall -I$(HADOOP_UTILS_PREFIX)/include \
         -I$(HADOOP_PIPES_PREFIX)/include

LDADD = -L$(HADOOP_UTILS_PREFIX)/lib -L$(HADOOP_PIPES_PREFIX)/lib \
-      -lhadooppipes -lhadooputils
+      -lhadooppipes -lhadooputils -lcrypto


# Define the sources for each program
0 голосов
/ 16 октября 2014

Вам просто нужно внести некоторые изменения в ваш Makefile. Библиотеки, которые изначально сопровождают hadoop, похоже, не делают этого. Вам нужно будет «переделать» их и изменить свой связанный путь. Полный ответ на этот вопрос можно найти по адресу http://goo.gl/y5iGZF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...