找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 1851|回复: 5

[N1盒子] 小白交叉编译qbittorrent静态版填坑教程

[复制链接]
发表于 2021-10-15 13:48 | 显示全部楼层 |阅读模式
本帖最后由 lcsuper 于 2021-10-19 19:21 编辑

前言:在贝壳云上安装一个老版本的qb,因为添加了功能所以必须要编译。系统使用的是armbian 5.9,但是编译的时候,libtorrent有一个文件始终无法编译通过,卡死在那也不报错。猜测原因可能是贝壳云的CPU性能太弱了,所以只能在x86的机器上通过工具链交叉编译成静态的二进制文件放到贝壳云上。
以前有为N1交叉编译aria2的经验,所以这次同样选择在Ubuntu下面使用aarch64-linux-gnu-gcc作为工具链来交叉编译。无奈才疏学浅,搞不定编译使用的脚本。连libtorrent使用的一大堆库都没办法顺利编译出来。
后来在恩山上看到大神@SZPUNK 贴出来一个编译脚本
  1. https://github.com/rampageX/qb-nox-static-cc/blob/main/cb-qb-static-aarch64.sh
复制代码

遂赶快来试试。中间遇坑无数,本文主要记录填坑过程。

1、编译平台:alpine-standard-3.14.2-x86_64
这个linux的发行版本从来没用过,所以碰到了很多问题。根据网上的教程安装完毕后,一定要把源/etc/apk/repositories 里面的community启用,默认是只有main,这一点坑了我半天,因为有些软件包不在main里面,怎么都安装不上。我用的是这样
  1. http://mirrors.aliyun.com/alpine/v3.14/main
  2. http://mirrors.aliyun.com/alpine/v3.14/community
复制代码

2、编译工具链musl-cross-make
  1. https://github.com/richfelker/musl-cross-make
复制代码

下载源码,修改 config.mak, target改成aarch64的标志:
  1. TARGET=aarch64-linux-musl
复制代码

后面就有坑了,编译完安装的时候,安装目录要有两个,config.mak加这两行
  1. OUTPUT = /opt/cross
  2. OUTPUT = /usr/loca
复制代码

3github打不开的问题,导致git的时候,没法下载,需要用到国内的git加速服务

4、先要apk add bash 安装bash包,脚本要用bash xxxx.sh启动,因为alpine是用的bash,请原谅我的小白

5、最大的坑:使用编译的boost库编译libtorrent的时候,报错1 target update fail,但是就不显示具体的错误细节。这个地方我卡了几天排故,因为每次运行脚本都要重新下载编译安装,非常费时间。后来我把git下载都注释掉了,直接编译才定位到故障。
能看到错误细节的方法就是在脚本的
第146行,boost编译命令加一个 -q的参数就能看到了。
  1. BOOST_ROOT="${install_dir}/boost" BOOST_INCLUDEDIR="${install_dir}/boost" BOOST_BUILD_PATH="${install_dir}/boost" "${install_dir}/boost/b2"  -q -j"$(nproc)" toolset=gcc-aarch64 dht=on encryption=on crypto=openssl i2p=on extensions=on variant=release threading=multi link=static boost-link=static runtime-link=static cxxflags="${CXXFLAGS}" cflags="${CPPFLAGS}" linkflags="${LDFLAGS}" install --prefix="${install_dir}"
复制代码

6、boost编译libtorrent报错的地方是文件include/libtorrent/rss.hpp第270行
  1. std::map<std::string, time_t> m_added
复制代码
std::map没有声明,在最顶上加上就行了
  1. #include <map>
复制代码

7、在脚本142行后加一句

  1. cp /home/rss.hpp ./include/libtorrent/rss.hpp
复制代码

rss.hpp我先修改好了,放在home目录下面,脚本git后,把改过的文件复制过去
运行脚本编译,最后生成的文件17M左右,拷贝到/usr/bin,给权限
最后感谢大神的脚本,qb在贝壳云上完美运行。

评分

参与人数 1恩山币 +1 收起 理由
tempip + 1 一看就是觉得高端、大气、上档次!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2021-10-19 12:19 | 显示全部楼层
技术流的文章,都要出来支持一下。
谢谢分享。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-12-1 21:29 | 显示全部楼层
学习下 Thanks~~~~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-1-9 17:50 | 显示全部楼层
谢谢大佬分享,学习交叉编译
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-3-10 20:36 | 显示全部楼层
谢谢分享000.0
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-4-2 02:55 | 显示全部楼层
感谢分享 看看如何解决报错
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-20 10:58

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表