找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 10749|回复: 15

GO百度云盘静态编译

[复制链接]
发表于 2020-9-23 00:18 | 显示全部楼层 |阅读模式
本帖最后由 401626436 于 2020-12-1 23:56 编辑
写得这么正规居然不行
  1. #
  2. # This is free software, licensed under the GNU General Public License v2.
  3. # See /LICENSE for more information.
  4. #

  5. include $(TOPDIR)/rules.mk

  6. PKG_NAME:=baidupcs-web
  7. PKG_VERSION:=3.7.0
  8. PKG_RELEASE:=1

  9. PKG_SOURCE_PROTO:=git
  10. PKG_SOURCE_URL:=https://github.com/liuzhuoling2011/BaiduPCS-Go.git
  11. PKG_SOURCE_VERSION:=cbc3e9e932d5c7a2b2302e4cd1b102f6f56fec44

  12. PKG_LICENSE:=GPL-2.0
  13. PKG_LICENSE_FILES:=LICENSE.txt

  14. PKG_BUILD_DEPENDS:=golang/host
  15. PKG_BUILD_PARALLEL:=1
  16. PKG_USE_MIPS16:=0

  17. GO_PKG:=github.com/liuzhuoling2011/BaiduPCS-Go
  18. GO_PKG_LDFLAGS:=-s -w -o BaiduPCS-Go
  19. GO_PKG_LDFLAGS_X:=main.Version=$(PKG_VERSION)

  20. include $(INCLUDE_DIR)/package.mk
  21. include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk

  22. define Package/baidupcs-web
  23.         SECTION:=net
  24.         CATEGORY:=Network
  25.         TITLE:=BaiduPCS-Web is a web controller for BaiduPCS-Go
  26.         URL:=https://github.com/liuzhuoling2011/BaiduPCS-Go.git
  27.         DEPENDS:=$(GO_ARCH_DEPENDS)
  28. endef

  29. define Package/baidupcs-web/description
  30. BaiduPCS-Web is a web controller for BaiduPCS-Go
  31. endef

  32. define Build/Compile
  33.         $(eval GO_PKG_BUILD_PKG:=$(GO_PKG))
  34.         $(call GoPackage/Build/Compile)
  35.         $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/BaiduPCS-Go
  36. endef

  37. define Package/baidupcs-web/install
  38.         $(INSTALL_DIR) $(1)/usr/bin
  39.         $(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/BaiduPCS-Go $(1)/usr/bin/baidupcs-web
  40. endef

  41. $(eval $(call GoBinPackage,baidupcs-web))
  42. $(eval $(call BuildPackage,baidupcs-web))
复制代码
还是歪门邪道的写法管用(shell脚本搬迁大法)
测试的过程中发现链接静态库之后UPX压缩后不能运行(那能不能先压缩后链接呢?!的确!)

1.其中先用SDK的GO环境编译得到二进制程序(忘了10多M)
2.UPX压缩缩小体积(3.3M)
3.静态链接库合并(12.8M)
未UPX压缩直接链接的20多M


乌班图编译它就可以,但安装到openwrt它就会提示缺少两个库 libc.so.5和libpthread.so.1
https://github.com/liuzhuoling2011/BaiduPCS-Go/blob/master/build.sh
有一个打包静态资源的命令
rice -i ./internal/pcsweb append --exec "$output/$1/$2"
rice究竟是什么?各种搜索引擎都查不到结果 sudo apt-get install rice 不存在这个包
反倒是 pip3 install rice 有结果但装完运行rice 还是提示没有这个命令
这究竟是为什么呢?!既然别人都写进去了,应该不是无的放矢吧!
(下载编译好的是不能够进行upx压缩的不然就运行报错了,还有就是换换这恒古不变的画面)
几经研究之下从他的仓库文字里跳到了另一个大佬的仓库,在这里我知道了rice是怎么回事
但是在编译测试的过程中发现openwrt的rice不能链接静态库(可能是环境变量的原因吧!泄漏到了编译机环境,发现在用户目录
/home/用户名/go/bin/rice  原来生成的东西漏出来了)
既然不行那就走曲线!

  1. #
  2. # This is free software, licensed under the GNU General Public License v2.
  3. # See /LICENSE for more information.
  4. #

  5. include $(TOPDIR)/rules.mk

  6. PKG_NAME:=baidupcs-web
  7. PKG_VERSION:=3.7.0
  8. PKG_RELEASE:=1

  9. PKG_SOURCE_PROTO:=git
  10. PKG_SOURCE_URL:=https://github.com/liuzhuoling2011/BaiduPCS-Go.git
  11. PKG_SOURCE_VERSION:=cbc3e9e932d5c7a2b2302e4cd1b102f6f56fec44

  12. PKG_LICENSE:=GPL-2.0
  13. PKG_LICENSE_FILES:=LICENSE.txt

  14. PKG_BUILD_DEPENDS:=golang/host
  15. PKG_BUILD_PARALLEL:=1
  16. PKG_USE_MIPS16:=0

  17. GO_PKG:=github.com/liuzhuoling2011/BaiduPCS-Go
  18. GO_PKG_LDFLAGS:=-w -s
  19. GO_PKG_LDFLAGS_X:=main.Version=$(PKG_VERSION)

  20. include $(INCLUDE_DIR)/package.mk
  21. include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk

  22. define Package/baidupcs-web
  23.     SECTION:=net
  24.     CATEGORY:=Network
  25.     TITLE:=BaiduPCS-Web is a web controller for BaiduPCS-Go
  26.     URL:=https://github.com/liuzhuoling2011/BaiduPCS-Go.git
  27.     DEPENDS:=$(GO_ARCH_DEPENDS)
  28. endef

  29. define Package/baidupcs-web/description
  30. BaiduPCS-Web is a web controller for BaiduPCS-Go
  31. endef

  32. PKG_BIN:=$(GO_PKG_BUILD_BIN_DIR)/baidupcs-web
  33. PKG_ROUTE:=`cd && pwd`

  34. define Build/Compile
  35.     ( \
  36.         $(call GoPackage/Build/Compile) ; \
  37.         pushd $(PKG_BUILD_DIR) ; \
  38.         export CGO_ENABLED=0 ; \
  39.         go build -ldflags "-X $(GO_PKG_LDFLAGS_X) $(GO_PKG_LDFLAGS)" -o $(PKG_BIN) ; \
  40.         $(STAGING_DIR_HOST)/bin/upx --lzma --best "$(PKG_BIN)" ; \
  41.         go get -u -v github.com/GeertJohan/go.rice ; \
  42.         go get -u -v github.com/GeertJohan/go.rice/rice ; \
  43.         $(PKG_ROUTE)/go/bin/rice -i ./internal/pcsweb append --exec "$(PKG_BIN)" ; \
  44.         popd ; \
  45.     )
  46. endef

  47. define Package/baidupcs-web/install
  48.     $(call GoPackage/Package/Install/Bin,$(1))
  49. endef

  50. $(eval $(call GoBinPackage,baidupcs-web))
  51. $(eval $(call BuildPackage,baidupcs-web))
复制代码
修改背景:
1.包目录建立 src/internal/pcsweb/dist/img/
2.准备一张 1920x1080 的图片 改名为 login-bg.c64d8255.jpg 放入img下
修改标题:
1.包目录建立 patches

2.进入https://github.com/liuzhuoling2011/BaiduPCS-Go.git的源码目录 internal/pcsweb/dist/index.html
3.patches 建立目录a 将index.html 原文件复制进去

4.复制目录a为目录b 命令: cp -R a b
5.修改目录b里的index.html 找到<title>baidu-pcs-web</title>修改baidu-pcs-web为你想要的名称即可
6.生成patch 命令:diff -upr a b>00-index.patch
7.删除 a和b目录
8.可以编译了

最后再研究go程序的编译发现,确实是因为原作者删库导致的不能编译
第3种编译方式(也是最接近openwrt的原生编译方式,仍需研究)
  1. #
  2. # This is free software, licensed under the GNU General Public License v2.
  3. # See /LICENSE for more information.
  4. #

  5. include $(TOPDIR)/rules.mk

  6. PKG_NAME:=baidupcs-web
  7. PKG_VERSION:=3.7.0
  8. PKG_RELEASE:=1

  9. PKG_SOURCE_PROTO:=git
  10. PKG_SOURCE_URL:=https://github.com/liuzhuoling2011/BaiduPCS-Go.git
  11. PKG_SOURCE_VERSION:=cbc3e9e932d5c7a2b2302e4cd1b102f6f56fec44

  12. PKG_LICENSE:=GPL-2.0
  13. PKG_LICENSE_FILES:=LICENSE.txt

  14. PKG_BUILD_DEPENDS:=golang/host
  15. PKG_BUILD_PARALLEL:=1
  16. PKG_USE_MIPS16:=0

  17. GO_PKG:=github.com/liuzhuoling2011/BaiduPCS-Go
  18. GO_PKG_LDFLAGS:=-w -s
  19. GO_PKG_LDFLAGS_X:=main.Version=$(PKG_VERSION)

  20. include $(INCLUDE_DIR)/package.mk
  21. include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk

  22. define Package/baidupcs-web
  23.         SECTION:=net
  24.         CATEGORY:=Network
  25.         TITLE:=BaiduPCS-Web is a web controller for BaiduPCS-Go
  26.         URL:=https://github.com/liuzhuoling2011/BaiduPCS-Go.git
  27.         DEPENDS:=$(GO_ARCH_DEPENDS)
  28. endef

  29. define Package/baidupcs-web/description
  30. BaiduPCS-Web is a web controller for BaiduPCS-Go
  31. endef

  32. USER_PATH:=`cd && pwd`

  33. define Build/Compile
  34.         ( \
  35.                 $(call GoPackage/Build/Compile) ; \
  36.                 rm -rf $(GO_PKG_BUILD_BIN_DIR)/AndroidNDKBuild ; \
  37.                 $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/* ; \
  38.                 pushd $(PKG_BUILD_DIR) ; \
  39.                 go get -u -v github.com/GeertJohan/go.rice ; \
  40.                 go get -u -v github.com/GeertJohan/go.rice/rice ; \
  41.                 $(USER_PATH)/go/bin/rice -i ./internal/pcsweb append --exec $(GO_PKG_BUILD_BIN_DIR)/* ; \
  42.                 popd ; \
  43.         )
  44. endef

  45. define Package/baidupcs-web/install
  46.         $(call GoPackage/Package/Install/Bin,$(1))
  47. endef

  48. $(eval $(call GoBinPackage,baidupcs-web))
  49. $(eval $(call BuildPackage,baidupcs-web))
复制代码

将原作者的仓库地址替换成备份的这位大佬的仓库地址  并生成patch

git clone https://github.com/liuzhuoling2011/BaiduPCS-Go.git
cd BaiduPCS-Go
sed -i 's/github.com\/iikira\/BaiduPCS-Go/github.com\/liuzhuoling2011\/BaiduPCS-Go/g' $(grep -rl BaiduPCS-Go)
git diff >00-modifyurl.patch

放到源码目录下的patches下就可以了,正常选中编译并保证与所连站点的网络畅通



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-9-23 00:36 | 显示全部楼层
-w其实屁用都没有
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-9-23 00:55 | 显示全部楼层
本帖最后由 wulishui 于 2020-9-23 01:03 编辑

其实我看不懂你这些东西,水平没那么高
主命令比如iptables、grep、awk这些用参量拼接很大几率无法正常运行,为什么我不知,但是某次我实际操作过失败,重复多次操作无一成功,之后乖乖的主命令就实实在在写。
看到N多人喜欢这样参量拼接主命令来用,我从来都不用。
之前自作聪明惹来诸多麻烦,排错搞得焦头烂额,现在都只用最基本的写法来实现。
改他们的东西,我宁可把他们原来的扔了自己重写也不去改脚本。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-9-23 01:00 | 显示全部楼层
本帖最后由 wulishui 于 2020-9-23 01:04 编辑

-w只能等待一次,再次失败的话就直接无视。

IPTRUN
$1 xxx估计就可以了吧。方案就是先拼接好,再作为参量引用。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-9-23 01:42 | 显示全部楼层
撒了泡尿躺下床,立刻就明白你这为什么不能用。
你自认为它是拼接的一个参量,但实际上它是一个子集。脚本解析没你想得那么聪明,它只执行子集,子集的后面被视作子集运行的参数,跟 sh /etc/init.d/firewall reload这样的引用性质一个鸟样。
你想用就要按我说的,先运行子集,把输出作为参量再引用一次。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2020-9-23 10:36 | 显示全部楼层
本帖最后由 401626436 于 2020-10-22 11:25 编辑







点评

试了下,问题应该在于|和&之类的连接符不能用变量代替  详情 回复 发表于 2020-10-13 11:36
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-10-13 11:36 | 显示全部楼层
本帖最后由 kleisth 于 2020-10-13 11:59 编辑
401626436 发表于 2020-9-23 10:36
没搞懂你说的子集是什么,你可以仔细看看顺便实验一番,这本来就是拼接好的参量(我知道你想说什么,把$1  ...

$IPT $transmit $turn $IPT $@这里脚本把turn变量表示的||和&&当做前面iptables的参数来运行了,而不是连接符,所以报错了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-10-13 15:29 | 显示全部楼层
本帖最后由 kleisth 于 2020-10-13 15:32 编辑
  1. #!/bin/sh

  2. state='0'
  3. IP='0.0.0.0'
  4. PORT='1234'
  5. IPT='iptables -w'

  6. for xy in "tcp" "udp"
  7. do
  8.    $IPT -t nat -C PREROUTING -p $xy -d $IP --dport 53 -j REDIRECT --to-ports $PORT 2>/dev/null || state=1
  9.    if [ $state = "1" ];then
  10.        $IPT -t nat -A PREROUTING -p $xy -d $IP --dport 53 -j REDIRECT --to-ports $PORT
  11.        state=0
  12.        echo "This rule($IP:$PORT/$xy) add now!"
  13.    else
  14.        echo -n "This rule($IP:$PORT/$xy) is exist!  Do you delete this rule? (y)? or input any key to exit."
  15.        read input
  16.        if [ "$input" = "y" -o "$input" = "Y" ];then
  17.            $IPT -t nat -D PREROUTING -p $xy -d $IP --dport 53 -j REDIRECT --to-ports $PORT
  18.            echo "This rule($IP:$PORT/$xy) was delete."
  19.        fi   
  20.    fi
  21. done
复制代码
感觉这样实现更容易理解点吧。。。我也是新手

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

使用道具 举报

发表于 2020-12-31 08:52 | 显示全部楼层
win平台编译3.7.3版本出现本机使用正常放到其他设备提示index.html不存在的错误,应该是rice 链接静态资源不成功,原项目关于编译的说明已经没了,楼主有没有原项目编译和交叉编译的资料,谢谢
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2020-12-31 10:01 | 显示全部楼层
maxmib 发表于 2020-12-31 08:52
win平台编译3.7.3版本出现本机使用正常放到其他设备提示index.html不存在的错误,应该是rice 链接静态资源 ...

https://github.com/liuzhuoling2011/BaiduPCS-Go/blob/master/build.sh

点评

我就是用的这个脚本生成的,困惑  详情 回复 发表于 2020-12-31 10:06
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-12-31 10:06 | 显示全部楼层
本帖最后由 maxmib 于 2020-12-31 10:11 编辑

我就是用的这个脚本生成的,困惑,我使用的这个项目Erope/BaiduPCS-Go: 百度网盘客户端 - Go语言编写 (github.com)
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2020-12-31 11:09 | 显示全部楼层
maxmib 发表于 2020-12-31 10:06
我就是用的这个脚本生成的,困惑,我使用的这个项目Erope/BaiduPCS-Go: 百度网盘客户端 - Go语言编写 (git ...

那我就不清楚了,我本就不会,摸索着来的!
我在想,既然原本是命令行的客户端,是不是能遍历网盘将目录和文件虚拟话到本地,当检测到访问该目录或文件时下载百度文件并给出一个速度较慢的“等待信号”,相当于把百度盘空间当本地硬盘使用

点评

你这个就是webdav的使用方式,还有iscsi,适合nas用。你可以试一下我的编译方式,我的系统是windows10 x64,golang版本1.15.6,编译过程是go get -u -v github.com/Erope/BaiduPCS-Gogo go get -u -v github.com/Ge  详情 回复 发表于 2020-12-31 13:27
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-12-31 13:27 | 显示全部楼层
401626436 发表于 2020-12-31 11:09
那我就不清楚了,我本就不会,摸索着来的!
我在想,既然原本是命令行的客户端,是不是能遍历网盘将目录 ...

你这个就是webdav的使用方式,还有iscsi,适合nas用。你可以试一下我的编译方式,我的系统是windows10 x64,golang版本1.15.6,编译过程是go get -u -v github.com/Erope/BaiduPCS-Gogo
go get -u -v github.com/GeertJohan/go.ricego
go get -u -v github.com/GeertJohan/go.rice/rice
再用git bash here执行build.sh,cmd里添加了zip命令
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-3-19 22:24 | 显示全部楼层
楼主 MIPS路由器这个插件找不到了 作者跑路了吗 ?? 有备份吗...
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2021-3-19 22:46 | 显示全部楼层
上位法 发表于 2021-3-19 22:24
楼主 MIPS路由器这个插件找不到了 作者跑路了吗 ?? 有备份吗...

复制我发的这个自己编译啊 都发出来了多简单

点评

这可能是我和大佬的区别吧.....  详情 回复 发表于 2021-3-19 22:53
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 18:35

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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