openssl-1.0.1i交叉编译动态库

要在海思HI3518上使用openssl,海思有自己的编译器,而在openssl的configure中是自然不会有默认对海思平台的支持选择的,所以不能直接用./Configre CC=arm-hisiv100nptl-linux-gcc 这样的配置选项。参照网上链接,先用Configure生成Makefile后,再直接修改Makefile,设置海思的编译器即可,实践证明,编译成功。

这里只编译了静态库,没有编译动态库。

考虑到Hi3518实际也是arm的平台,而openssl里面有android-armv7的交叉编译支持,所以Configure时配置了android-armv7

$ ./Configure android-armv7 --prefix=$HOME/openssl-release --openssldir=$HOME/openssl-release

$ vi Makefile

定义海思平台的交叉编译器新加一行:

CROSS_COMPILE=arm-hisiv100nptl-linux-

找到

CC= cc改成CC= $(CROSS_COMPILE)gcc

还有

AR=ar $(ARFLAGS) r
RANLIB= /usr/bin/ranlib

改成:

AR=$(CROSS_COMPILE)ar $(ARFLAGS) r
RANLIB= $(CROSS_COMPILE)ranlib

由于定义了android-armv7,所以在CFLAGS里面会有编译选项-mandroid,而海思的编译器是不支持此选项的,要删除

保存退出

$make

$make install


如果是需要编译动态库,则应该在configure时,添加no-asm shared参数,然后如上修改Makefile,并添加修改如下两项:

SHLIB_TARGET=linux-shared
SHARED_LIBS=libcrypto.so libssl.so

即:

$./Configure android-armv7 no-asm shared --prefix=$HOME/projects/wificamera/baidu_sdk/depend --openssldir=$HOME/projects/wificamera/baidu_sdk/depend

$ vi Makefile

新加一行:

CROSS_COMPILE=arm-hisiv100nptl-linux-

找到

CC= gcc改成CC= $(CROSS_COMPILE)gcc

还有

AR=ar $(ARFLAGS) r
RANLIB= /usr/bin/ranlib

改成:

AR=$(CROSS_COMPILE)ar $(ARFLAGS) r
RANLIB= $(CROSS_COMPILE)ranlib

找到SHLIB_TARGET和SHARED_LIBS

改成

SHLIB_TARGET=linux-shared
SHARED_LIBS=libcrypto.so libssl.so

删除编译选项-mandroid

保存退出

$make

$make install


以下是参考:

链接:http://www.verydemo.com/demo_c167_i8629.html

#交叉编译openssl ------

直接修改Makefile
新加这一行:
CROSS_COMPILE= arm-unknown-linux-gnueabi-
定位到以下行
CC= cc改成CC= $(CROSS_COMPILE)gcc
定位到以下行
AR=ar $(ARFLAGS) r
RANLIB= /usr/bin/ranlib
改成
AR=$(CROSS_COMPILE)ar $(ARFLAGS) r
RANLIB= $(CROSS_COMPILE)ranlib
然后修改安装的路劲,定位到以下两行
INSTALLTOP=/usr/local/ssl
OPENSSLDIR=/usr/local/ssl
改成实际安装路径,由于不是在本机运行,所以可以任意指定位置
INSTALLTOP= /someplace/openssl

OPENSSLDIR= /someplace/openssl

以上部分都是按网上资料改的,经过测试可以生成静态库,但生成动态库的修改点却跟网上说的不一样,经过实践需要修改如下几个地方:

继续修改Makefile:

SHLIB_TARGET=linux-shared
SHARED_LIBS=libcrypto.so libssl.so

make,成功生成动态库。


动态

./config no-asm shared --prefix=/usr/local/openssl
2.
a、修改Makefile CC=arm-none-linux-gnueabi-gcc
b、找到有-m64的地方,将-m64删除。
make
3.
make install

你可能感兴趣的:(linux,program,arm_asm,c/c++)