ubuntu下怎么打包写好的Qt程序
你可以参考SQLiteStudio这个Qt写的跨平台SQLite管理工具,它自己打包了依赖的Qt库,可以做到解压即用,兼容不同Linux发行版.道理其实跟Windows版Qt程序自带Qt库差不多.
编译前给连接器传一个参数:
说明:
-Wl 表示告诉编译器将后面的参数传递给链接器.
rpath是gcc的一个参数,当程序被加载时,会搜寻rpath目录,寻找共享库.
rpath添加的目录信息保存在可执行文件中.
$ORIGIN表示可执行文件所在的目录.
也就是运行时程序会先去自己所在的目录的lib里去加载依赖库,没有的话再去系统库里找.
如果你的程序在编译时没有传递rpath参数,那你也可以用patchelf来修改你程序的rpath:
注意:patchelf修改文件后再strip会导致文件损坏.
所以应该先用strip删除符号表缩小二进制文件,然后再用patchelf设置rpath.
题外话,Android上既没有glibc库,也没有库链接器ld-linux.so.3.
如果你要把Debian ARM(如树莓派Raspbian)上的软件放到Android上跑,你一样可以打包程序依赖的共享库,让程序也能跑在Android上,比如PHP:
也就是你把库链接器ld-linux-armhf.so.3和PHP依赖的库都放到/data/local/tmp/web/lib里,然后设置个别名,就能在Android的adb shell里运行树莓派的PHP了.
当然,你也可以用patchelf设置PHP的interpreter和rpath,效果差不多:
网狐cocos lua怎么打包apk
仍然使用上次生成的test工程,我是放在bin目录下的。
在bin目录下创建文件test.bat文件,内容如下:
[cpp]viewplaincopy
@echooff
setDIR=%~dp0
%DIR%win32\php.exe%DIR%\lib\compile_scripts.php-zip-xmaintest/scripts/test/res/test
说下complie_scripts.php的用法:
[cpp]viewplaincopy
usage:compile_scripts[options]dirnameoutput_filename
options:
-zippackagetozip
-suffixpackagefileextensionname
-pprefixpackagename
-xexcludepackages,eg:-xframework.server,framework.tests
-qquiet
examples:
*packageingscripts/*.luatores/game.zip
compile_scripts-zipscripts/res/game
注意:需要将quick-cocos2d-x\bin\win32目录加入到系统PATH环境变量,另外过程中可能会提示缺少msvcr110.dll文件,自己解决一下就可以了。
运行test.bat后就会在test/res目录加生成test.zip文件。
要调用里面的脚本需要在mail.lua文件中CCLuaLoadChunksFromZip("res/framework_precompiled.zip")语句下添加一句代码:
CCLuaLoadChunksFromZip("res/test.zip")
删除掉原来的脚本,注意要保留main.lua,测试一下,证明程序可以运行。
这样脚本就不需要加密解密了。