QTE安装移植全过程(转载并修改)

http://blog.csdn.net/linux_shuishou/article/details/6234401

Qt4.5.3 和 tslib1.4 在 ubuntu8.04 下安装及移植(转载并修改)

QT在路上 2010-11-12 10:42:13 阅读335 评论5   字号:     订阅

Qt4.5.3 和 tslib1.4 
在 ubuntu8.04 下安装及移植 
到友善之臂 Mini2440 开发板 
彭海银 
2009 年 12 月 15 日 
注意:()内的内容为我在实践中遇到的问题和解决方法,并且我是在ubuntu10.10环境下实现的 

经过网上查阅大量相关资料,边学习边实践,在失败中步步推进,历经诸多曲折,耗费 
大量时间后,终于安装移植成功,特写下此文,为有意做这方面工作的同志们留下点参考资 
料。整个安装及移植过程经过本人亲自测试,保证能用。 
警告:一次完整的安装及移植大概需要 12 个小时左右,前提是中间不出错,如果出了 
错,那就得重来了...... 
1 开发环境 
操 作 系统:Vmware6.0 + Ubuntu 8.04 
交叉编译器:arm-linux-gcc-4.3.2( 
“友善之臂”提供,具体安装方法见第 10 节) 
目 标 板:友善之臂 mini2440 + 统宝 3.5 寸屏 
2 准备工作 
2.1 下载源码包 
ftp://ftp.qtsoftware.com/qt/source/下载: (我在该目录下找不到下面包,然后在ftp://ftp.trolltech.com/qt/source/下则可找到) 
qt-embedded-linux-opensource-src-4.5.3.tar.gz 
qt-x11-opensource-src-4.5.3.tar.gz 
http://search.download.csdn.net/search/tslib%201.4上下载: 
tslib1.4.tar.gz 
2.2 配置 ubuntu 8.04 编译环境 
安装 g++: 
sudo apt-get g++ (我在ubuntu10.10下操作提示无效操作,然后输入sudo apt-get -y install g++则可执行,前提是你还没有安装g++) 
安装编译 X11 用到的库: 
sudo apt-get -y install x-dev libx11-dev xlibs-static-dev x11proto-xext-dev libxext-dev (在该处,尝试了很多方法还是提示找不到 x-dev,上网查了,说是和其他的库相关联着。libx11-dev也如此) 
libqt3-mt-dev 
安装 libxtst-dev: 
sudo apt-get install libxtst-dev,否则编译 qvfb 出错。 
2.3 建立目录 
/usr/local/qt (源码包存放的目录) 
在终端中执行: 
mkdir /usr/local/qt 
3 安装交叉编译器 
使用“友善之臂”提供的 arm-linux-gcc-4.3.2 
3.1 解压 arm-linux-gcc-4.3.2.tgz 
把 arm-linux-gcc-4.3.2.tgz 复制到在 12.2.3 中建立的目录/usr/local/qt 下, 
在终端中进行如 
下操作: 
cd /usr/local/qt 
sudo tar xvzf arm-linux-gcc-4.3.2.tgz –C / 
注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此是 
改变目录的意思。 
执行该命令,将把 arm-linux-gcc 安装到/usr/loca/arm/4.3.2 目录。 
3.2 设置路径变量 
由于刚才是在/usr/local/arm 的目录下安装的 arm-linux-gcc-4.3.2,所以设置路径为: 
PATH=/usr/local/arm/4.3.2/bin:$PATH,然后可以查看 arm-linux-gcc 的版本情况,在终端中进 
行以下操作: 
export PATH=/usr/local/arm/4.3.2/bin:$PATH 
arm-linux-gcc -v 
这样就把交叉编译器的地址变量设置好了, 
但这样设置路径变量的方法只在此终端中生 
效,对其他的终端无效,若要设置对所有用户所有终端都有效的路径变量,在/etc/profile 中 
最后一行添加“export PATH=/usr/local/arm/4.3.2/bin:$PATH” 
,保存退出,注销系统即生效。 
4 编译及安装qt-x11-opensource-src-4.5.3 
4.1 编译安装 qt-x11 及 qvfb 
qt-x11 版本可以产生 Qt 开发工具,如 designer、qvfb,嵌入式的开发有了 qvfb,就可以 
不需要实际的开发板,也可以开发 Qt 应程序。 
tar zxvf qt-x11-opensource-src-4.5.3.tar.gz 
cd qt-x11-opensource-src-4.5.3 
./configure (会出现选择商业还是开源,输入‘O’回车,还会弹出是否接受协议,输入“yes”回车) 
make (需要超长的时间,我的机子用了差不多3个小时) 
cd tools/qvfb 
make 
cd ../.. 
make install 
4.2 复制 qvfb 相关文件 
make install 完成后, 
会在/usr/local 目录下生成一个 Trolltech 目录, 
形成/usr/local/Trolltech 目录,这是 qt-x11-opensource-src-4.5.3 安装后所在的目录,进入/usr/local/Trolltech 会看到一 个 Qt-4.5.3 的目录,将/usr/local/qt/qt-x11-opensource-src-4.5.3/tools/qvfb 目录下的 qvfb 相关 文 件 拷 贝 到 /usr/local/Trolltech/Qt-4.5.3/bin 目 录 下 , 在 终 端 中 操 作 ( 确 定 当 前 目 录 是 /usr/local/qt/qt-x11-opensource-src-4.5.3) 
cp tools/qvfb/qvfb* /usr/local/Trolltech/Qt-4.5.3/bin 
OK,qt-x11-opensource-src-4.5.3 就编译安装成功了,此过程大约需要 4 小时。
(作者貌似漏了一些,要运行qvfb还必须编译生成可执行文件qvfb,操作如下:
cd qt-x11-opensource-src-4.5.3/tools/qvfb/
make
mv qvfb /usr/local/Trolltech/QtEmbedded-4.5.3-x86/bin/ 
)
5 编译及安装qt-embedded-linux-opensource-src-4.5.3 
5.1 解压 qt 文件 
将 qt-embedded-linux-opensource-src-4.5.3.tar.gz 复制到/usr/local/qt 目录下进行解压,解 压 完 成 后 , 得 到 /usr/local/qt/qt-embedded-linux-opensource-src-4.5.3 目 录 。 将 qt-embedded-linux-opensource-src-4.5.3 重命名为 qt-embedded-linux-opensource-src-4.5.3-x86。 再 解 压 一 下 qt-embedded-linux-opensource-src-4.4.3.tar.gz , 并 重 命 名 为 qt-embedded-linux-opensource-src-4.5.3-arm,在终端中进行操作: cd /usr/local/qt 
tar zxvf qt-embedded-linux-opensource-src.tar.gz 
mv qt-embedded-linux-opensource-src-4.5.3 qt-embedded-linux-opensource-src-4.5.3-x86 
tar zxvf qt-embedded-linux-opensource-src.tar.gz 
mv qt-embedded-linux-opensource-src-4.5.3 qt-embedded-linux-opensource-src-4.5.3-arm 
这 里 , qt-embedded 有 两 个 复 制 : qt-embedded-linux-opensource-src-4.5.3-x86 和 
qt-embedded-linux-opensource-src-4.5.3-arm,根据他们的名字可以知道前者是适合 x 架构的, 
后者适合 arm 架构为什么需要两个呢?如果有开发板的话, 
可 以只编译 qt-embedded 版本成arm 架构的就可以了,但是很多时候用 qvfb 的话,开发会方便很多,所以多编译一个 x86架构的也不错。这里是否有些疑问,qt-x11 也是适合 x86 结构的,这不是和 qt-embedded 重复了吗?答案是这样的,qt-embedded 版本只能在嵌入式板子上面运行,编译成 x86 架构的程序也只能在 x86 的嵌入式板子上跑。前面说过,我们需要 qvfb 来开发,但是 qvfb 只能执行 x86 架构的应用程序,所以需要让qt-embedded 生成关于 x86 的库和其他文件。而将qt-embedded 编译成 arm,又是为什么呢?道理很简单,我最终的 qt 应用程序需要在 arm 架构上面运行,当然需要这方面的库,所以编译成 arm 也就顺理成章了。好了,现在简单的总结一下,首先,使用 qt-x11 提供的库和开发工具开发出 qt 应用程序,然后使用 qt-embedded 关于 x86 库和工具再次编译我们开发 qt 应用程序,这是所得到的 可执行文件就可以在 qvfb 上运行了,最后,使用 qt-embeddedd 的 arm 库再次编译就可以得 到在 arm 上能运行的可执行程序。很明显,如果有开发板,第二步是可要可不要的(最好 是要) ,如果没有开发板的话,第三步也就没必要了,这样就不需要将 qt-embedded 编译成 
适合 arm 架构的。 
5.2 解压及编译触摸屏软件 tslib1.4.tar.gz (我在该处出的问题最多) 
A、安装编译过程需用到的程序 
apt-get install autoconf(或 autoconf2.13) 
apt-get install automake 
apt-get install libtool 
B、配置编译 
tar xzvf tslib-1.4.tar.gz 
cd tslib 
./configure 提示没有这个文件,一旦运行完./autogen.sh则可生成configure可执行文件,可是再执行后面就会出错,所以我选择不用配置了,即不执行这一步,后面编译就通过 ) 
(echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache   //为了防止出现undefined reference to `rpl_malloc' 错误,而作者没有加入这一步,我也出现了undefined reference to `rpl_malloc' 错误,加了就可以编译了 ) 
source autogen.sh 
./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes (我的配置是这样的./configure --prefix=/usr/local/tslib --host=arm-linux --cache-file=arm-linux.cache,通过) 
make 
最后给出成功的命令:
export CC=arm-linux-gcc
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache 
./configure --host=arm-linux --cache-file=arm-linux.cache -prefix=/usr/local/tslib
make
make install 
经过本人实际论证,上面配置完全可行,我意思就是说不要按着作者那样的配置,就按着我 括号内的配置
 

C、安装 
make install 
 
make install-strip //生成瘦身应用程序和库 
在 PC 机/ usr/local/tslib/下生成触摸屏运行库。 
打包 
tar czvf tslib.tar.gz tslib 
5.3 编译及安装 qt-embedded-linux-opensource-src-4.5.3-x86 
进入/usr/local/qt/ qt-embedded-linux-opensource-src-4.5.3-x86 目录,进行编译安装。在终 
端中进行如下操作: 
cd /usr/local/qt/ qt-embedded-linux-opensource-src-4.5.3-x86 
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.3-x86 -embedded x86 -qvfb 
make 
make install 
——OK!qt-embedded-x86 被安装在/usr/local/Trolltech/QtEmbedded-4.5.3-x86 下。 
5.4 编译及安装 qt-embedded-linux-opensource-src-4.5.3-arm 
进入/usr/local/qt/qt-embedded-linux-opensource-src-4.5.3-arm 目录,进行编译安装。在终 
端中进行如下操作: 
cd /usr/local/qt/qt-embedded-linux-opensource-src-4.5.3-arm 
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.3-arm -embedded arm -release 
-shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow 
-no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg 
-make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups 
-no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 
16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb 
-no-glib -qt-mouse-tslib -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb -I/usr/local/tslib/include -L/usr/local/tslib/lib 务必要输入正确,我就因为把-no-sse2 输入为-no-see2引起很多错误, 还有-depths 空格16,18 
注意上面的红色目录要跟你的 tslib 安装目录相同!! 
make (时间不是很长,半个小时这样) 
make install (时间也不是很长,20多分钟吧) 
——OK!qt-embedded-arm 被安装在/usr/local/Trolltech/QtEmbedded-4.5.3-arm 下. 
注意: 
1如果在配置指令./configure ......执行后,发生错误,可以进入到解压缩文件目录(如 
/usr/local/qt/qt-embedded-linux-opensource-src-4.5.3-arm 目录),执行 make configclean 便可将 
前面所有的配置都清除掉,然后再./configure。 
2如果在编译的过程中出错, 
在重新 make 前需要先执行 make clean, 
然后再./configure, 
再执行 make 的操作。 
3在 make install 完后,可执行 make clean 将中间生成的许多.o 文件清楚,这些临时文 
件要占很大一部分空间。 
4如果使用的是软件包程序直接安装的 qt,以及 qvfb(没有进行相关配置) 
,而不是使 
用源代码安装。则运行 qte 测试程序时候会报错: 
Error opening framebuffer device /dev/fb0 
QScreenLinuxFb::connect: No such file or directory 
原因是 Qt-Embedded 在查找系统的显示设备时,默认去寻找 LinuxFb,也即 Linux 的 
/dev/fb0 设备,但是如果 Qt- Embedded 安装了其它显示设备,比如 qvfb,则可以在 qvfb 上显 
示, 
但是需要一个插件(或者说驱动, 
可能会和设备驱动混淆), Qt- Embedded 能使用 qvfb。 
使 
为了做到这一点,需要在编译 Qt-Embedded 时的 configure 命令加上如下选项 
./configure -plugin-gfx-qvfb -plugin-kbd-qvfb -plugin-mouse-qvfb 或 
./configure -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb 
如果,你不想重新编译 Qt-Embedded,也可以单独编译 qvfb 的 gfxdrivers,命令如下 
cd qt-embedded-linux-opensource-src-4.5.3/src/plugins/gfxdrivers/qvfb/ 
/usr/local/Trolltech/QtEmbedded-4.5.3/bin/qmake 
sudo make install 
对应所在的路径,在大家的机器上可能不尽相同,领会意思就行完成后,再打开 qvfb, 
然后运行 qte 测试程序,大家可以看到,qvfb 窗口中出现了 qte 测试程序的界面 
6 设置环境变量及各版本使用方法 
至此我们已经安装好了 qt-x11 版,即在 PC 机上运行的 QT,qt-embedded-x86 版(x86 体 
系的嵌入式板子上运行的 QT)和 qt-embedded-arm(arm 板子上运行的 QT)。下一步:设置环 
境变量: 
6.1 qt-x11 环境变量设置 
vi setenv.sh 
添加如下内容: 
PATH=/usr/local/Trolltech/Qt-4.5.3/bin:$PATH 
LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.5.3/lib:$LD_LIBRARY_PATH 
保存退出,移到/usr/local/Trolltech/Qt-4.5.3 中。 (我一开始将环境变量添加到了/etc/profile文件中,可是后来发现,需要选择不同的编译环境,所以需要按着后面步骤来做) 
6.2 qt-embedded-x86 环境变量设置 
vi setenv-x86.sh 
添加如下内容: 
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-x86 
PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-x86/bin:$PATH 
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-x86/lib:$LD_LIBRARY_PATH 
保存退出,移到/usr/local/Trolltech/QtEmbedded-4.5.3-x86 中。 
6.3 qt-embedded-arm 环境变量设置 
vi setenv-arm.sh 
添加如下内容: 
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm 
PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin:$PATH 
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib:$LD_LIBRARY_PATH 
保存退出,移到/usr/local/Trolltech/QtEmbedded-4.5.3-arm 中。 
6.4 各版本使用方法 
我们在运行的时候分别运行对应的脚本即可,比如我们要用 qt-x11: 
cd /usr/local/Trolltech/Qt-4.5.3 
source setenv.sh 
然后就可以用 qmake designer 等工具了。 
7 运行库移植到mini2440 板 
7.1 在 mini2440 板上建立目录 
在 mini 2440 板建立如下目录: 
/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin 
/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts 
/usr/local/tslib 
我对7.2和7.3步骤的建议是:把电脑端 /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib 即把整个lib放到板子的/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib,这样是最安全的。我试过按着作者的7.2,7.3操作,不是缺这就是少那,因为好像全部都有链接 ) 
7.2 复制字库文件 
把 PC 机上/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts 目录上所有字库文件 CP 
到 mini2440 上的/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts 目录下。 
7.3 复制运行库 
在 PC 机上复制下列文件到 mini 2440 上的/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib 
目录下: 
libQtGui.so.4 libts-0.0.so.0 libQtCore.so.4 libQtNetwork.so.4 
一般在 PC 机上/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/和/tslib/上可以找到上述文 
件。复制时注意如果需要复制的文件是链接文件,则把被链接文件都要复制上。 
7.4 复制触摸屏软件 
复 制 PC 机 上 /usr/local/tslib/ 目 录 下 的 全 部 文 件 ( 含 子 目 录 ) 到 mini 2440 上 的 
/usr/local/tslib 目录下 
7.5 在开发板上建立环境变量 
修改开发板上/etc/profile 文件,增加以下内容: 
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm 
export QPEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm 
export TSLIB_ROOT=/usr/local/tslib 
export PATH=$QTDIR/bin:$PATH 
export TSLIB_CONSOLEDEVICE=none 
export TSLIB_FBDEVICE=/dev/fb0 
export TSLIB_TSDEVICE=/dev/input/event0 
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts 
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf 
export TSLIB_CALIBFILE=/etc/pointercal 
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0 
export QWS_DISPLAY=LinuxFb:/dev/fb0 
export QWS_SIZE=320x240 
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH 
7.6 使触摸屏生效 
修改 mini2440 上/usr/local/tslib/etc/ts.conf 文件:把第二行# module_raw input 前面的# 
和空格去除,保存退出。 
7.7 校准触摸屏 
触摸屏的前提是你的触摸屏驱动已经写好, 
并加载进了内核。 
你可以测试有没有加载触 
摸屏驱动, /dev/input/event0(这只是我的板子上的触摸屏) , 点击触摸屏, 
cat 
看终端有无显示, 
若有则表明正确。重新启动开发板,执行: 
cd / 
cd /usr/local/tslib/bin 
./ts_calibrate 
校准触摸屏 
./ts_test 
测试触摸屏 
如果正常,QT4 Embedded 移植成功! 
8 mini2440 板开机自动运行自己的程序 
本来是准备开机以后运行 qtopia 再运行自己的程序,但是本来能全屏运行的程序通过 
rcS 自动运行后并不能全屏显示,qtopia 的任务栏仍然在。所以就决定不用 qtopia,直接在 
目标板上运行程序。 
首先按照 12.7.1、 
12.7.2、 
12.7.3 和 12.7.4 移植相应的运行库到开发板, 
然后修改 mini2440 
上 /dev/init.d/rcS 如下: (在/etc/init.d/下,作者写错了) 
添加环境变量 
export set HOME=/root 
export set TSLIB_ROOT=/usr/local/tslib 
export set TSLIB_CONSOLEDEVICE=none 
export set TSLIB_TSDEVICE=/dev/input/event0 
export set TSLIB_FBDEVICE=/dev/fb0 
export set TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf 
export set TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts 
export set TSLIB_CALIBFILE=/etc/pointercal 
export set QTDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm 
export set QPEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm 
export set PATH=$QTDIR/bin:$PATH 
export set QWS_MOUSE_PROTO="Tslib:/dev/input/event0" 
export set QWS_DISPLAY=LinuxFb:/dev/fb0 
export set LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH 
将 rcS 文件中的最后 3 行: 
/bin/qtopia & 
echo " 
" > /dev/tty1 
echo "Starting Qtopia, please waiting..." > /dev/tty1 
替换为: 
$QPEDIR/bin/check -qws & 
echo " 
" > /dev/tty1 
echo "Starting myQt apps, please waiting..." > /dev/tty1 
(其实倒数第 3 行是启动代码了,最后两行只是在屏幕上显示一句话,不是重点目标。 
) 
将可执行程序 check 放在/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin 目录下, 开机将从 ,不启动 QTOPIA,触摸屏能用,成功。 自己的程序 check 启动($QPEDIR/bin/check -qws &) 
注:&表示在后台运行 
如果你出现下面问题:
Couldnt load module input                                 
No raw modules loaded.                                                          
QWSTslibMouseHandlerPrivate: ts_config() failed with error: 'No such file or di'
Please check your tslib installation! 
我的解决方法是:重新输入一次export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts就可以解决触摸屏不能使用的问题
 )
总结:
这 里用到的Qt库与开发板Qtopia的库无关的(我尝试着把开发板/opt/Qtopia下的全部删除了也可以运行下载进去的程序),触摸屏也无关。所以 即使没有编译成功触摸屏的库,可以从开发板中复制过去即可。问题是一开始设计PC端QtEmbedded-...-arm的./configure中触摸 屏的路径必须与你现在要复制到开发板中的触摸屏的路径一样。同样我们要把已经编译安装了的QtEmbedded-...-arm的./configure 的Qt库路径,在开发板端模拟一个和PC一样的路径,然后把PC端的lib复制过去就可以了。
意思就是开发板和PC端路径一样,只是开发板端只需要库而已,当然触摸屏得全要。
整个移植最需要注意的 地方就是设计QtEmbedded-...-arm的./configure那块了,其它就没什么了。
(到此移植部分结束)

将自己开发的qt程序做成文件系统:
移植好奇mini2440的文件系统是怎么制成的,于是去看了天嵌的手册,总结一下整个过程:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值