构建GeckoDriver armv7二进制

Selenium调用Firefox提示如下错误:

selenium.common.exceptions.WebDriverException: Message: Service ./geckodriver unexpectedly exited. Status code was: 1

这是驱动与平台不兼容导致的,需要指定对应的GeckoDriver。

Mozilla提供了linux-aarch64的版本,可以在官方发行说明页面下载。我的开发板是armv7l平台,v0.23.0之后Mozilla就不提供arm7hf版本了,需要自行构建。

如果还没有安装Rust,请先安装:

curl https://sh.rustup.rs -sSf | sh

如果安装较慢或失败,可尝试设置国内镜像源:

export RUSTUP_DIST_SERVER='https://mirrors.ustc.edu.cn/rust-static' 
export RUSTUP_UPDATE_ROOT='https://mirrors.ustc.edu.cn/rust-static/rustup'

下载源码:

wget https://github.com/mozilla/geckodriver/archive/refs/tags/v0.35.0.tar.gz

可在以下页面获取最新版本:

https://github.com/mozilla/geckodriver/releases

解压并进入源码目录:

tar -zvxf v0.35.0.tar.gz
cd geckodriver-0.35.0

开始构建:

cargo build --release

交叉编译

如果需要编译为在其他平台使用的二进制文件,可交叉编译。需要注意,如果编译平台的系统版本高于运行平台,可能会无法正常运行。

例如,我在Ubuntu较新版本编译后,在Debian 10下就无法使用。

安装交叉编译工具:

sudo apt install gcc-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross

添加环境变量:

source $HOME/.cargo/env

安装rustc目标工具链:

rustup target install armv7-unknown-linux-gnueabihf

进入源码目录,编辑config:

cd geckodriver-0.35.0
vi .cargo/config

写入以下代码:

[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"

开始编译:

cargo build --release --target armv7-unknown-linux-gnueabihf

原创文章,作者:,如若转载,请注明出处:https://ce.771633.xyz/2121.html

Like (0)
Previous 2025年3月8日
Next 2025年3月8日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注