2012-06-26 5 views
0

Я пытаюсь скомпилировать rtmpdump (http://rtmpdump.mplayerhq.hu/) для QNAP NAS 419p (руки)составление rtmpdump для руки

Я не очень exprenced с Linux или компиляции, но я пытаюсь узнать ,

make жалуется, что он не может найти openssl и им не уверен, с чего начать?

[/share/Qdownload/src] # ipkg install openssl 
Package openssl (0.9.8v-2) installed in root is up to date. 
Nothing to be done 
Successfully terminated. 

подтверждает, что я установил OpenSSL

[/share/Qdownload/src] # 
[/share/Qdownload/src] # ipkg install zlib 
Package zlib (1.2.5-1) installed in root is up to date. 
Nothing to be done 
Successfully terminated. 
[/share/Qdownload/src] # 

подтверждает я есть ZLIB единственный другой depenance я думаю, что мне нужно.

[/share/Qdownload/src] # make linux 
make[1]: Entering directory `/share/MD0_DATA/Qdownload/src' 
g++ -Wall -O2 -c -o rtmp.o rtmp.cpp 
In file included from rtmp.h:44, 
      from rtmp.cpp:42: 
dh.h:22:24: error: openssl/bn.h: No such file or directory 
dh.h:23:24: error: openssl/dh.h: No such file or directory 
dh.h:25:25: error: openssl/sha.h: No such file or directory 
dh.h:26:26: error: openssl/hmac.h: No such file or directory 
dh.h:27:25: error: openssl/rc4.h: No such file or directory 
In file included from rtmp.h:44, 
       from rtmp.cpp:42: 
dh.h:34: error: 'BIGNUM' was not declared in this scope 
dh.h:34: error: 'y' was not declared in this scope 
dh.h:34: error: 'BIGNUM' was not declared in this scope 
dh.h:34: error: 'p' was not declared in this scope 
dh.h:34: error: 'BIGNUM' was not declared in this scope 
dh.h:34: error: 'q' was not declared in this scope 
dh.h:34: error: initializer expression list treated as compound expression 
dh.h:35: error: expected constructor, destructor, or type conversion before '*' token 
dh.h:36: error: 'DH' was not declared in this scope 
dh.h:36: error: 'dh' was not declared in this scope 
dh.h:37: error: 'DH' was not declared in this scope 
dh.h:37: error: 'dh' was not declared in this scope 
dh.h:37: error: expected primary-expression before '*' token 
dh.h:37: error: 'pubkey' was not declared in this scope 
dh.h:37: error: expected primary-expression before 'nPubkeyLen' 
dh.h:37: error: initializer expression list treated as compound expression 
dh.h:38: error: 'DH' was not declared in this scope 
dh.h:38: error: 'dh' was not declared in this scope 
dh.h:38: error: expected primary-expression before '*' token 
dh.h:38: error: 'privkey' was not declared in this scope 
dh.h:38: error: expected primary-expression before 'nPrivkeyLen' 
dh.h:38: error: initializer expression list treated as compound expression 
dh.h:39: error: 'DH' was not declared in this scope 
dh.h:39: error: 'dh' was not declared in this scope 
dh.h:39: error: expected primary-expression before '*' token 
dh.h:39: error: 'pubkey' was not declared in this scope 
dh.h:39: error: expected primary-expression before 'nPubkeyLen' 
dh.h:39: error: expected primary-expression before '*' token 
dh.h:39: error: 'secret' was not declared in this scope 
dh.h:39: error: initializer expression list treated as compound expression 
dh.h:40: error: variable or field 'DHFree' declared void 
dh.h:40: error: 'DH' was not declared in this scope 
dh.h:40: error: 'dh' was not declared in this scope 
In file included from rtmp.cpp:42: 
rtmp.h:97: error: ISO C++ forbids declaration of 'DH' with no type 
rtmp.h:97: error: expected ';' before '*' token 
rtmp.h:98: error: ISO C++ forbids declaration of 'RC4_KEY' with no type 
rtmp.h:98: error: expected ';' before '*' token 
rtmp.h:99: error: ISO C++ forbids declaration of 'RC4_KEY' with no type 
rtmp.h:99: error: expected ';' before '*' token 
rtmp.cpp: In member function 'int RTMP_LIB::CRTMP::ReadN(char*, int)': 
rtmp.cpp:653: error: 'struct RTMP_LIB::LNK' has no member named 'rc4keyIn' 
rtmp.cpp:654: error: 'struct RTMP_LIB::LNK' has no member named 'rc4keyIn' 
rtmp.cpp:654: error: 'RC4' was not declared in this scope 
rtmp.cpp: In member function 'bool RTMP_LIB::CRTMP::WriteN(const char*, int)': 
rtmp.cpp:672: error: 'struct RTMP_LIB::LNK' has no member named 'rc4keyOut' 
rtmp.cpp:674: error: 'struct RTMP_LIB::LNK' has no member named 'rc4keyOut' 
rtmp.cpp:674: error: 'RC4' was not declared in this scope 
make[1]: *** [rtmp.o] Error 1 
make[1]: Leaving directory `/share/MD0_DATA/Qdownload/src' 
make: *** [linux] Error 2 
[/share/Qdownload/src] # 

Благодарим за любые советы, которые вы можете дать.

+0

Был ли этот шаг в настройке? Похоже, что библиотеки не находятся там, где компилятор может их найти, поэтому я готов поспорить, что он должен быть проинструктирован с помощью пути. Проверьте README, как это сделать. – bcelary

+0

Ах и еще одна вещь. Вы проверили, есть ли доступный пакет openssl-devel или openssl-dev? Тот, который вы установили, скорее всего, является только библиотекой. – bcelary

+0

Нет шага настройки, у меня нет dev-версии открытого ssl. Я рассмотрю это. – user1055212

ответ

1

Обязательно установите версии разработки пакетов openssl и zlib.

Также убедитесь, что каталог openssl находится где-то в стандартной системе, включая каталоги, которые должны быть /usr/include и /usr/local/include и некоторые другие в зависимости от вашей цепочки инструментов.

Но не верьте мне на слово и выполняйте cpp -v < /dev/null. Он запускает препроцессор GNU C с вводом/dev/null. Должен печатать пути поиска по каталогам. Ищите "#include < ...> поиск начинается здесь:", а затем список стандартов включает пути поиска. Это также порядок включения.

+0

У меня нет версии для разработки любого пакета. к сожалению, ipkg может устанавливать только обычные версии. Мне пришлось бы самостоятельно скомпилировать dev-версии. – user1055212

+0

У меня есть много программ, уже зависящих от openssl, если я компилирую и устанавливаю dev-версию, мне сначала нужно будет удалить существующую версию, будет ли нормально устанавливать обе версии, не нарушая другие вещи? – user1055212

+0

Не знаете, на каком дистрибутиве вы находитесь, и, честно говоря, я никогда не занимался ipkg. Это Слак? В моем опыте Debian/Ubuntu версия -dev не удаляет пакет, но добавляет больше файлов (включая документы разработчиков и т. Д.), Поэтому вы можете правильно включить/связать библиотеку. – bcelary

0

Если вы компилируете для ARM, недостаточно установить библиотеки для собственного дистрибутива ... вам нужны библиотеки и кросс-компилятор, который работает на вашей машине разработки (возможно, x86 или x86_64), но генерирует код для целевой платформу (ARM).

Если у вас нет кросс-компилятора для этого NAS Qnap, this link должен помочь вам сгенерировать его с помощью crosstool-ng, что является отличным инструментом, который поможет вам скомпилировать кросс-компиляторы с нуля. Тогда вам, вероятно, понадобится корневая файловая система с библиотеками, созданными для вашей целевой платформы.

Все, что связано с кросс-компиляцией, нетривиально, но мы можем попытаться помочь. Какой дистрибутив вы используете на своей машине?

+0

Благодарим вас за помощь. Я не пытаюсь перекрестно компилировать, но компилировать непосредственно на NAS Qnap. У меня установлен компилятор и диспетчер пакетов Optware IPKG, к сожалению, я не могу получить пакет openssl-dev из ipkg. Я предполагаю, что это может быть намного сложнее, чем я ожидал сделать это. – user1055212

+0

Я не знаю ipkg, но в зависимости от вашего дистрибутива пакет не называется «-dev». Вы знаете, какой дистрибутив вы используете? (Slackware я уверен, что это не так .. потому что я использую его каждый день) – Claudio

Смежные вопросы