我正在尝试以fips模式编译Openssl。我编译了fips模块/ canister,我在编译openssl时使用它。一切似乎都有效但当我将openssl二进制文件移动到目标平台(arm)时,一切都崩溃了,它抱怨它没有正确版本的glibc,因为目标平台(arm)上的glibc版本是2.12.2但构建主机(i386 ubuntu)上的glibc版本是2.15。我可以手动将更新版本的glibc添加到嵌入式目标平台,然后openssl将工作,但嵌入式Linux系统的其他部分因为不同的glibc而中断。
我需要能够针对精确的版本2.12.2版本的glibc编译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_library并导致seg错误。
〜#LD_LIBRARY_PATH = / mnt / mtd6part / free / lib / openssl 分段错误
欢迎任何建议!
答案 0 :(得分:0)
终于找到了它是什么。我的构建系统上有两个不同的交叉编译器,一个是针对某些东西进行编译的,另一个是针对openssl编译的新编译器。所以新的有lib 2.15和旧的2.12.2的glibc。最好只搜索你的系统libc-你会看到你是否有另一个版本浮动。
我删除了较新的版本,还发现我必须更新配置选项
有很大的不同 export CROSS_COMPILE =“arm-cortex_a8-linux-gnueabi-” 在配置之前,这告诉它使用digi目录中的旧选项 export CROSS_COMPILE =“arm-linux-gnueabi-” 告诉它使用新的交叉编译器
也许这会对某人有所帮助。