openV**在使用过程中,依赖于系统时间ntpdate,openssl,libpam,lzo,tun。因此要成功安装并能够使用openV**,需要满足这些条件
下载ntpdate.tar.gz。放入交叉编译环境。在编译目录,根据以往的通用编译过程如下:
mkdir __install
./configure CC=arm-linux-gnueabihf-gcc \
--prefix=$(pwd)/__install \
--host=arm-linux-gnueabihf \
CFLAGS=-I/usr/local/include \
LDFLAGS=-L/usr/local/lib
make
make install
将编译的文件移动到嵌入式系统中,加入环境变量。执行以下更新时间:
ntpdate ntp.api.bz
输入date命令查看时间。当时区不同时,需要修正时区显示:
从宿主机中找到一个时区文件:/usr/share/zoneinfo/Asia/Shanghai,将该文件复制,放入命名为/etc/localtime,再次更新时间,再次观察date确认。
openssl编译需要特殊的注意。没有使用setarch虽然能够正常得到目标文件,但是在移植完毕后,输入openssl genrsa却会卡住,由此产生对openV**的验证秘钥失败等奇怪问题。
(虽然输入openssl -version是可以得到正确结果的)
编译形式如下:
sudo setarch i386 ./config no-asm shared --prefix= /home/ty/arm/openssl --cross-compile- prefix= arm-linux-
在以上类型的命令得出到Makefile后,删除其中所有的-m32,然后make和make install,然后导入嵌入式系统,测试。
linux-pam文件的编译,注意解压过程在Linux系统下进行。因为原始的Windows系统区分不区分大小写,所以在解压过程中会认为是相同的文件,进行覆盖或重命名。
而Linux系统是区分大小写形式的。如PAM文件和pam文件,是两个不同的文件,需要注意。
其它交叉编译步骤相同。
lzo编译是容易的,编译即可。
将编译的软件放入到交叉编译环境下的查找目录,便于openV**能够找到依赖文件的路径,然后按照通用的编译步骤进行编译。
移植过程有一些注意事项。首先是openV**的使用需要openssl,因此openssl也需要安装到嵌入式系统中。但是查找路径的问题,需要注意。
因此需要类似于以下的命令。(注意具体问题的具体修改),作出软链接,测试。 第一个路径为实际的文件路径,第二个是建立的软链接路径。
有时候使用的可能是/lib32下的路径。
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
另外,在使用ifconfig和route的时候,也可能会出现相同的问题。
观察具体的openV**的查找路径,建立软链接,使得openV**能够找到。(不要移动ifconfig软件,可能会死)
在以上的步骤中,可能出现找不到网卡的问题,所以说需要编译得到tun.ko的网卡驱动模块,然后使用insmod tun.ko命令,加载驱动,
具体怎样编译该驱动,查找内核相关,然后也许make menuconfig之类的吧。。。centos可能跑menuconfig有错,也许yum install -y ncurses-devel可以解决呢
使用lsmod查看加载的驱动,才能够正常使用openV**。
使用openV** --config sss.oV**之类的命令,然后随意测试。
另外要注意openV**的版本。最新版即可。不要用有些老掉牙的2.3.2版本,服务器端用2.4.8,那就编译一个2.4.8的客户端连接,否则旧的软件不支持有些加密方案,也缺失一些功能,
反而会导致一些查不到,解决不了的问题!
最后附上一些交叉编译的参考:
https://www.cnblogs.com/live-program/p/11065004.html 一个编译例子
https://dev.archive.openwrt.org/ticket/9184 openV**找不到ifconfig
还有一个很有价值的新浪博客找不到了,,