PointTeam / PointDownload

homepage
GNU General Public License v3.0
225 stars 43 forks source link

编译后的可执行文件很大 #6

Closed 1dot75cm closed 9 years ago

1dot75cm commented 10 years ago

您好,我想问下:

  1. 使用动态编译后,PointDownload可执行文件有19M,而您deb包提供的可执行文件只有1.7M,这是怎么回事?
  2. 编辑pro文件,使用CONFIG+=static选项进行静态编译,但编译后的可执行文件仍然使用动态链接库,是否因为 qmake 编译器本身是 -shared 编译的?如果使用 -static 选项 编译qt5,就可以进行静态编译了?
PointTeam commented 10 years ago

1、用动态编译生成的可执行文件可达19M,我们只在静态编译下试过会生成这么大的文件,能说一下你大概的操作过程吗?我们deb包中的可执行文件是直接动态编译生成的,所以比较小,加上一些其它脚本,最后压缩后也就是1点多M这样子。 2、我们使用静态编译是需要用qt的源码生成的可静态编译的qt-sdk,然后进行静态编译,不知道你使用静态编译的过程是怎样的呢?

1dot75cm commented 10 years ago
  1. 我的编译过程:

    qmake-qt5 ../PointPopup.pro; make; make install

    qmake-qt5 ../PointDownload.pro; make; make install

    没使用任何make优化选项的话,生成的二进制文件PointDownload 是19M $ file PointDownload PointDownload: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=724ed35c6fc2f865e2d4ca4c2ef3109dfd81dee8, not stripped $ du -sh PointDownload 19M PointDownload 而我使用rpmbuild 编译以后,二进制文件和您提供的deb 大小一致。猜想是不是上面的编译方法,将.o文件全都链接到二进制了? 但我看两种方法编译的g++ 命令是一致的,没看出有什么优化选项。

  2. 恩 我在网上看qt静态编译的文章,都说需要添加 -static 选项来编译静态版本的qt5。
  3. 还有个问题,我在deb包里看到了 XwareStartUp, 但我编译PointDownload时并没有生成这个文件。如何生成这个文件?
  4. PointChromeExtension.crx这个插件只能用chrome浏览器来打包么?我使用zip 压缩源代码,但是安装失败,提示CRX_MAGIC_NUMBER_INVALID。
1dot75cm commented 10 years ago

您好,我在为 fedora 系统打包。我按照 fedora 下软件的常用目录结构,修改了point download。我修改了如下文件:

sed -i s@'/opt/Point/PopupWindow/PointPopup'@'/usr/bin/point-popup'@g \

PointDownload/Download/unifiedinterface.h \ PointChromeExtension/pointdownload.json \ PointFirefoxExtension.xpi/chrome/content/saveas.js \ PointFirefoxExtension.xpi/chrome/content/main.js

sed -i s@'/opt/Point/PointDownload/PointDownload'@'%{_bindir}/%{name}'@g \

PointPopup/control/datacontroler.h

PointDownload/Controler/topcontrl.cpp "/usr/share/icons/point.png", PointChromeExtension/nkbchchceepbameamioagcjlhnghdoff.json "external_crx": "/usr/share/point-download/extensions/PointChromeExtension.crx" 目前,可以用rpm包,正常安装,但存在以下问题:

  1. 没有编译出此文件 XwareStartUp,迅雷用户可正常登陆,但是其支持的 bt ed2k 等都无法下载;
  2. firefox 插件正常,可下载视频,下载非动态网站的文件链接( .iso, .rpm, .exe),动态生成下载地址的不能下载。 chrome插件无法使用,我查看源代码 没发现需要修改路径什么的。点击下载 无法弹出point。

我的项目地址:https://copr.fedoraproject.org/coprs/mosquito/myrepo fedora 19/20/21/rawhide , rhel 7 添加源以后,使用以下命令安装:

yum install point-download

Match-Yang commented 10 years ago

你好,非常感谢你的帮助,因为这两天事情比较忙所以没法及时给你回复非常抱歉,过两天时间比较多我会把你提的问题都给你说清楚一点的

Match-Yang commented 10 years ago

还有打包后软件名可以使用pointdownload吗?和debian的包统一命名,这样不至于大家的误解

1dot75cm commented 10 years ago

恩 好的,谢谢您的回复。

PointTeam commented 10 years ago

你好,隔了好几天才给你回复请见谅 1、首先关于目录结构,浏览器插件在启动下载操作后,会启动指定的/opt/Point/PopupWindow/PointPopup,该路径是写在程序中的,只要你改变了目录结构后用链接等方式能保证/opt/Point/PopupWindow/PointPopup可以被执行就可以了,同理,PointPopup也会去启动指定的/opt/Point/PointDownload/PointDownload,所以只要能保证原来位置的文件可以被执行或者访问都是没有问题的。 2、XwareStartUp的源码在整理的时候漏掉没有放上去,现在放上去了,实在对不起,之前因为时间太赶忽略了这个。XwareStartUp负责启动xware后端,如果没有这个的话是不能使用xware下载任何东西的,所以你提到的bt、ed2k等都无法下载是这个原因 3、动态生成下载地址不是不能下载,是在正则表达式的时候改漏了,囧。。。我们马上改回去;关于chrome的插件无法使用,就跟我第一点提到的一样,必须保证原来目录下的文件可以执行 4、还有在打包的时候要注意的一点,请按照deb包DEBIAN目录下的配置文件文件(postinst、preinst、postrm、prerm)中执行的设置命令,请务必将这些命令改写到rpm包的spec文件中,这里面会做很多的设置操作,包括chrome配置启动弹出窗(第三点可能是你没有执行这些命令造成的)、chrome和firefox扩展的自动安装、XwareStartUp获得超级权限(这一步很重要)、自动文件关联(点击网页的磁力链接或者ed2k链接会自动启用Point进行下载,双击BT文件也会自动启动下载)等

如果有什么问题,请随时跟我们联系,再一次感谢你的帮助!

------------------ 原始邮件 ------------------ 发件人: "1dot75cm"notifications@github.com; 发送时间: 2014年9月26日(星期五) 晚上10:49 收件人: "PointTeam/PointDownload"PointDownload@noreply.github.com; 抄送: "PointTeam"pointteam@foxmail.com; 主题: Re: [PointDownload] 编译后的可执行文件很大 (#6)

您好,我在为 fedora 系统打包。我按照 fedora 下软件的常用目录结构,修改了point download。我修改了如下文件:

sed -i s@'/opt/Point/PopupWindow/PointPopup'@'/usr/bin/point-popup'@g \

PointDownload/Download/unifiedinterface.h \ PointChromeExtension/pointdownload.json \ PointFirefoxExtension.xpi/chrome/content/saveas.js \ PointFirefoxExtension.xpi/chrome/content/main.js

sed -i s@'/opt/Point/PointDownload/PointDownload'@'%{_bindir}/%{name}'@g \

PointPopup/control/datacontroler.h

PointDownload/Controler/topcontrl.cpp "/usr/share/icons/point.png", PointChromeExtension/nkbchchceepbameamioagcjlhnghdoff.json "external_crx": "/usr/share/point-download/extensions/PointChromeExtension.crx" 目前,可以用rpm包,正常安装,但存在以下问题:

  1. 没有编译出此文件 XwareStartUp,迅雷用户可正常登陆,但是其支持的 bt ed2k 等都无法下载;
  2. firefox 插件正常,可下载视频,下载非动态网站的文件链接( .iso, .rpm, .exe),动态生成下载地址的不能下载。 chrome插件无法使用,我查看源代码 没发现需要修改路径什么的。点击下载 无法弹出point。

我的项目地址:https://copr.fedoraproject.org/coprs/mosquito/myrepo fedora 19/20/21/rawhide , rhel 7 添加源以后,使用以下命令安装:

yum install point-download

— Reply to this email directly or view it on GitHub.

choldrim commented 10 years ago

刚刚commit 了一个新的版本,麻烦你在打包时先再clone或pull一下吧,感谢您对我们软件的支持!:)

1dot75cm commented 10 years ago

(^_^) 感谢项目组回复,今天国庆休息,明天我再打包测试。祝您们国庆节快乐。

1dot75cm commented 9 years ago

xware 登陆出现以下错误 [xware info] login success, initialise binding ... AllBindedPeerIds from web is empty, it may be an error or first time to bind to your pc~~~ [xware error]open xware etm.cfg file error or it doesn't exist !!

choldrim commented 9 years ago

哦,不好意思,忘了和你说: XwareStartUp 须要放到/opt/Point/PointDownload 目录 并执行 sudo setcap CAP_SYS_ADMIN=+ep ‍XwareStartUp‍ 命令 因为这些是在deb安装时做的,所以就没写在代码部分了 (建议在设置窗口把Xware 先 Disable 掉 然后再 Enable 再试试)

1dot75cm commented 9 years ago

刚才又测试了一下develop分支,完全按照 dev那个目录结构编译打包, 登陆xware还是出现那个错误。0922那个版本,xware还可以登陆呢。setcap 执行不执行,都报相同的错误。 右上角有时报 timeout,有时报 router code error

choldrim commented 9 years ago

你好,我们可以私下QQ联系吗?因为这里交流进度有些慢,我们想具体了解一下你的问题,可以吗? 我QQ:724447804 (加的时候说明一下) 很抱歉给你造成困扰了,同时感谢你的耐心测试,:)

1dot75cm commented 9 years ago

噢 好的,晚一点加您。 上面说的是deb 我打错了。

1dot75cm commented 9 years ago

一边下载文件,一边监控这个网页(http://yuancheng.xunlei.com/3/# ), 不一会就自己离线了。需要重启才能继续下载。

choldrim commented 9 years ago

在变成离线的时候有没试过 ps aux | grep Emb 看看Xware进程有没挂掉,确定这一点对问题的查找很关键。

1dot75cm commented 9 years ago

rpm已更新1029,关于上面那个问题我再测试一下。