2015-12-14 1 views
0

Я пытаюсь скомпилировать Openssl в режиме fips. Я скомпилировал модуль fips/canister, и я использую его при компиляции openssl. Кажется, все работает, но все ломается, когда я перемещаю двоичный файл openssl на целевую платформу (рука), он жалуется, что у него нет правильной версии glibc, потому что версия glibc на целевой платформе (arm) равна 2.12.2 но версия glibc на хосте здания (i386 ubuntu) равна 2.15. Я могу вручную добавить новую версию glibc во встроенную целевую платформу, а затем openssl будет работать, а затем другие части встроенной Linux-системы будут разбиты из-за разных glibc.cross compiling openssl с конкретной версией glibc для встроенной системы

Мне нужно скомпилировать openssl против точной версии glibc версии 2.12.2, поэтому, когда я перехожу к цели, она все еще работает.

~ # openssl version 
openssl: /lib/libc.so.6: version `GLIBC_2.15' not found (required by openssl) 

это моя компиляция кода, который я бег на хосте

make clean 
export TARGETMACH=arm-none-linux-gnueabi 
export BUILDMACH=i686-pc-linux-gnu 
export CROSS=arm-linux 
export TOOLCHAIN_DIR=/usr/local/DigiEL-5.9/x-tools/arm-cortex_a8-liunx-gnueabi/ 
export PATH=/usr/local/DigiEL-5.9/x-tools/arm-cortex_a8-linux-gnueabi/bin/:$PATH 
export MACHINE=armv71 
export RELEASE=3.2.0 
export SYSTEM=Linux 
export ARCH=arm 
export CROSS_COMPILE="arm-linux-gnueabi-" 
export FIPS_SIG=$PWD/util/incore 
export HOSTCC=gcc 
export CFLAGS="-I/usr/local/ssl-1.0.2/include" 
export LDFLAGS="-L/usr/local/DigiEL-5.9/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/lib -R/usr/local/DigiEL-5.9/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/lib" 
export FIPSDIR=/home/autosol/CMApps/AppsWeCompile/fipsOpenSSL/install/ 

./config fips shared --openssldir=/home/autosol/CMApps/AppsWeCompile/compiledApps/openssl/usr --with-fipsdir=/home/autosol/CMApps/AppsWeCompile/fipsOpenSSL/install 
make depend 
make 
make install 

Я не пытался не-поделился, что не поможет, но создать гораздо больше двоичный. Я попытался установить ld_library, и это вызывает ошибку seg.

~ # LD_LIBRARY_PATH =/мнт/mtd6part/бесплатно/Библиотека/OpenSSL Сегментация вина

ЛЮБЫЕ предложения приветствуются!

ответ

0

Наконец-то выяснилось, что это было. У меня было два разных кросс-компилятора в моей системе сборки, в которых некоторые вещи были скомпилированы, а другой более новый, который openssl был скомпилирован. Итак, у нового был lib 2.15 и старый 2.12.2 glibc. Лучше всего искать систему для libc-, и вы увидите, есть ли у вас другая версия, плавающая вокруг.

я удалил новую версию, а также нашел, что я должен был обновить мои варианты конфигурации

была большая разница в экспорта CROSS_COMPILE = «рука-cortex_a8-линукс-gnueabi-» перед тем конфигурации, это говорит его использовать двоичные файлы в диги директории, где старый вариант экспорта CROSS_COMPILE = «рука-линукс-gnueabi-» сказал ему использовать новый кросс-компилятор

возможно, что кому-то поможет.