针对嵌入式系统交叉编译openssl与特定版本的glibc

针对嵌入式系统交叉编译openssl与特定版本的glibc,openssl,glibc,fips,Openssl,Glibc,Fips,我试图在fips模式下编译Openssl。我已经编译了fips模块/容器,并且在编译openssl时使用了它。一切似乎都正常,但当我将openssl二进制文件移动到目标平台(arm)上时,一切都崩溃了。它抱怨没有正确版本的glibc,因为目标平台(arm)上的glibc版本是2.12.2,而构建主机(i386 ubuntu)上的glibc版本是2.15。我可以手动将较新版本的glibc添加到嵌入式目标平台,然后openssl可以工作,但是嵌入式linux系统的其他部分会因为glibc的不同而崩溃

我试图在fips模式下编译Openssl。我已经编译了fips模块/容器,并且在编译openssl时使用了它。一切似乎都正常,但当我将openssl二进制文件移动到目标平台(arm)上时,一切都崩溃了。它抱怨没有正确版本的glibc,因为目标平台(arm)上的glibc版本是2.12.2,而构建主机(i386 ubuntu)上的glibc版本是2.15。我可以手动将较新版本的glibc添加到嵌入式目标平台,然后openssl可以工作,但是嵌入式linux系统的其他部分会因为glibc的不同而崩溃

我需要能够针对glibc的2.12.2版本编译openssl,这样当我将其移动到目标时,它仍然可以工作

~ # 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_库,这会导致seg故障

~#LD_LIBRARY_PATH=/mnt/mtd6part/free/lib/openssl 分段故障


欢迎提出任何建议

终于发现了那是什么。我的构建系统上有两个不同的交叉编译器,一个是编译某些东西时使用的编译器,另一个是编译openssl时使用的新编译器。所以新的版本有lib2.15,旧的版本有glibc的2.12.2。最好只是在你的系统中搜索libc,然后你就会看到是否有另一个版本

我删除了较新的版本,还发现我必须更新配置选项

在这方面有很大的不同 导出CROSS_COMPILE=“arm-cortex_a8-linux-gnueabi——” 在配置之前,这告诉它使用digidir中的二进制文件,其中旧选项 导出CROSS_COMPILE=“arm linux gnueabi-” 告诉它使用新的交叉编译器

也许这会对某人有所帮助