找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
本帖最后由 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 收起 理由
tem*** + 1 一看就是觉得高端、大气、上档次!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
技术流的文章,都要出来支持一下。
谢谢分享。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

学习下 Thanks~~~~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

谢谢大佬分享,学习交叉编译
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

谢谢分享000.0
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢分享 看看如何解决报错
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

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

GMT+8, 2024-4-28 16:49

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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