2015年1月22日 星期四

[Linux] Porting openssl to MIPS platform

嵌入式移植無師... 要很多經驗就是。

通常僅需要把 x86 gcc compiler 換成 cross-compiler就完成了。

另外再處理 CFLAGS LDFLAGS makefile 可能還要調一下 configuration 的參數...
在倒楣的話還要在小改一下code

好像越說越多,總之

Porting 就像生小孩,你不會知道他背後"幹"了多少次。 (各種意味)




這次幫別人debug openssl porting 一看到 crti.o 檔案找不到,就該警覺toolchain 有問題了,根本是內部路徑不完備,浪費一堆時間。

怎麼可能會有人給出有問題的toolchian 阿?!
乾... 真的發生了。

重新由 buildroot 開始...(包 toolchain -- > port openssl)
以下筆記

這篇就寫給... 小鋅大人囉。

完備:
1. toolchain cross compiler:
#wget http://buildroot.uclibc.org/downloads/buildroot-2014.11.tar.gz

2. Good openssl package:
#wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1g.tar.gz

For toolchain: (target: mips, version 1)
>go into buildroot folder

#make menuconfig
choose:
Target Architecture (MIPS (big endian))  --->
Target Architecture Variant (mips 32)  --->
Toolchain type (Buildroot toolchain)  ---> [*] Enable large file (files > 2 GB) support

#make
DONE

Setup cross-compiler:
Edit file as:
# cat set_PATH_build_root
-----
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# chang the path to "YOUR" buildroot-gcc342
TOOLCHAINDIR=/YOUR/PATH/buildroot-2014.11/output/host/usr
export PATH=${TOOLCHAINDIR}/bin:${PATH}
----

Source it
#source set_PATH_build_root

For openssl:
> go into openssl folder
#./config --prefix=/YOUR/OPENSSL/FOLDER/build --cross-compile-prefix=mips-linux- --openssldir=/YOUR/OPENSSL/FOLDER/ shared no-asm
#make
DONE

Check
#file libssl.so.1.0.0
libssl.so.1.0.0: ELF 32-bit MSB  shared object, MIPS, MIPS32 version 1 (SYSV), dynamically linked, not stripped

沒有留言:

張貼留言