IMX6Q基于yocto 4.9.88系统交叉编译nss-3.73

交叉编译nss库

在Qt5.12.10基础上编译QtwebEngine,发现要求NSS >= 3.26 is required.而系统里的nss库只有2.26 ,因此需要重新移植NSS,本文编译的nss版本是3.73.

本次使用的虚拟机:Ubuntu20.04

ARM目标板:imx6Q主板

源码下载地址

nss-3.*.tar.gz.
需要下载补丁:

NSS 依赖下载:
nspr-4.x.tar.gz.

下载的是nss3.73,nspr4.32

本文直接下载的是整体包:nss-3.73-with-nspr-4.32.tar.gz

nss-3.73-with-nspr-4.32.tar.gz

在Ubuntu的X86平台编译nspr和nss

(因为直接交叉编译报错,需要在X86平台编译后的文件)

首先Ubuntu20.04的X86平台编译nss以及依赖库nspr

编译nspr

cd nss-3.73/
cp -r nspr/ nspr-x86/
#此目录用gcc编译
cd ./nspr-x86/
sed -ri 's#^(RELEASE_BINS =).*#\1#' pr/src/misc/Makefile.in
sed -i 's#$(LIBRARY) ##'            config/rules.mk
./configure --with-pthreads --enable-64bit --with-mozilla 
make
#安装是因为等会还要make 64位的nss库
make install
#完成后nspr被安装到虚拟机/usr/local目录下




编译NSS

cd  ../
cp -r nss/ nss-x86/

patch -Np1 -i ../nss-3.73-standalone-1.patch 

make BUILD_OPT=1                  \
  NSPR_INCLUDE_DIR=/usr/local/include/nspr  \
  USE_SYSTEM_ZLIB=1                   \
  ZLIB_LIBS=-lz                       \
  NSS_ENABLE_WERROR=0                 \
  $([ $(uname -m) = x86_64 ] && echo USE_64=1) \
  $([ -f /usr/include/sqlite3.h ] && echo NSS_USE_SYSTEM_SQLITE=1)


交叉编译nspr和nss

配置交叉编译环境:

source /opt/fsl-imx-x11/4.9.88-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi

export C_INCLUDE_PATH=/opt/fsl-imx-x11/4.9.88-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include

交叉编译nspr:

#用交叉编译器编译nspr
cd ../nspr/

sed -ri 's#^(RELEASE_BINS =).*#\1#' pr/src/misc/Makefile.in
sed -i 's#$(LIBRARY) ##'            config/rules.mk


./configure --with-pthreads  \
--prefix=/opt/fsl-imx-x11/nspr \
--host=arm-linux

make
#此时会报错提示../../../config/./nsinstall: ../../../config/./nsinstall: 无法执行二进制文件
#原因用32位交叉编译器生成的可执行文件nsinstall,pc无法执行
#解决方法:用gcc编译生成的文件进行替换

cp ../nspr-x86/config/nsinstall ./config

#继续make
make
make install

交叉编译nss:

#用交叉编译器编译nss
cd ../nss

patch -Np1 -i ../nss-3.50-standalone-1.patch 


make -j1   BUILD_OPT=1 \
  NSPR_INCLUDE_DIR=/opt/fsl-imx-x11/nspr/include/nspr  \
  NSPR_LIB_DIR=/opt/fsl-imx-x11/nspr/lib  \
  NSS_USE_SYSTEM_SQLITE=1   \
  NSS_ENABLE_WERROR=0   \
  USE_SYSTEM_ZLIB=1   \
  USE_STATIC_RTL=1   \
  OS_TEST=arm \
  CROSS_COMPILE=1
  
#此时make报错:/bin/sh: 行 2: 
#./coreconf/nsinstall/Linux5.11_arm_glibc_PTH_OPT.OBJ/nsinstall: 无法执行二进制文件: 可执行文件格式错误
#报错原因与nspr库相同,所以也用pc的gcc编译一个生成可执行文件进行替换

cp ../nss-x86/coreconf/nsinstall/Linux5.11_x86_64_cc_glibc_PTH_64_OPT.OBJ/nsinstall ./coreconf/nsinstall/Linux5.11_arm_glibc_PTH_OPT.OBJ/nsinstall

#继续上面的执行make设置

"make"

#成功

安装完成后,需要转移库的位置,路径根据自己需求调整

# cd ../dist/Linux5.11_arm_glibc_PTH_OPT.OBJ/
# install -v -m755 lib/*.so   /opt/fsl-imx-x11/4.9.88-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/lib/nss/lib/
# install -v -m644 lib/{*.chk,libcrmf.a} /opt/fsl-imx-x11/4.9.88-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/lib/nss/lib/
# install -v -m755 -d  /opt/fsl-imx-x11/4.9.88-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/lib/nss/include
# cp -v -RL ../{public,private}/nss/*    /opt/fsl-imx-x11/4.9.88-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/lib/nss/include
# chmod -v 644      /opt/fsl-imx-x11/4.9.88-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/lib/nss/*
# install -v -m755 bin/{certutil,nss-config,pk12util}  /opt/fsl-imx-x11/4.9.88-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/bin
# install -v -m644 lib/pkgconfig/nss.pc    /opt/fsl-imx-x11/4.9.88-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/pkgconfig

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诺水城子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值