кросс-компиляция openssl с определенной версией glibc для встроенной системы

Я пытаюсь скомпилировать Openssl в режиме fips. Я скомпилировал модуль/контейнер fips и использую его при компиляции openssl. Кажется, все работает, но все ломается, когда я перемещаю бинарный файл openssl на целевую платформу (руку), он жалуется, что у него нет правильной версии glibc, потому что версия glibc на целевой платформе (руке) 2.12.2 но версия glibc на хосте сборки (i386 ubuntu) — 2.15. Я могу вручную добавить более новую версию glibc на встроенную целевую платформу, и тогда openssl будет работать, но тогда другие части встроенной системы Linux сломаются из-за другого 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

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

~ # LD_LIBRARY_PATH=/mnt/mtd6part/free/lib/ openssl Ошибка сегментации

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


person user1202605    schedule 14.12.2015    source источник


Ответы (1)


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

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

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

может быть, это поможет кому-то.

person user1202605    schedule 16.12.2015