中动用aria2c进行下载并出示进程条,不可缺少

By admin in 4858.com on 2019年4月15日

【转自】

第一步骤:

1 编译linux-2.6.14.tar.bz2,基于smdk2410_defconfig

2 编译skyeye-1.2.4_Rel.tar.gz

三 编写翻译busybox-一.1九.二.tar.bz2,用于制作initrd.img文件

4 制作initrd.img文件

5 用skyeye模拟运维

陆 在arm-linux里运转大家团结的次序

[[
]]
[]
再加上
][
累计是 四 个在段落(对于 C 来讲正是函数)间跳转的下令。

要求 Windows Native (一),windowsnative

[源码下载]

必备 Windows Native (一) – C 语言: hello c

作者:webabcd

介绍
须求 Windows Native 之 C 语言

  • 在 Windows Store Apps 中调用 C/C++
  • hello c

示例
一、演示怎么样在 Windows Store Apps(C#) 中调用 C/C++,必要新建 Windows
Runtime Component(C++) 项目
NativeDll/Simple.h

/*
 * .h 头文件
 */

// 保证头文件只被编译一次(即使被多次引用,也只被编译一次)
#pragma once 

namespace NativeDll // 命名空间
{
    public ref class Simple sealed // 类
    {
    public:
        int Add(int x, int y); // 方法
    };
}

NativeDll/Simple.cpp

/*
 * .cpp 实现文件
 *
 * 为了支持 Windows Runtime Component 这种方式,所以引入 Microsoft created the Visual C++ component extensions (C++/CX),可以将其看作是连接“调用者”和“C/C++”之间的桥梁,元数据是 windows metadata (.winmd) files
 * 为了让“调用者”调用 Windows Runtime Component,所以 C++/CX 会有自己的一些数据类型,比如字符串是 Platform::String^ 类型的,这样才能让“调用者”调用
 * 关于 C++/CX 的相关知识请参见:https://msdn.microsoft.com/en-us/library/hh755822.aspx
 */

#include "pch.h" // 预编译头文件
#include "Simple.h" // 需要实现的头文件

// 头文件中定义的命名空间
using namespace NativeDll;

// 实现头文件中的方法
int Simple::Add(int x, int y)
{
    return x + y;
}

NativeDemo/Simple.xaml.cs

/*
 * 演示如何用 C# 调用 C++
 * 
 * 对应的 Windows Runtime Component(C++) 详见 NativeDll 项目
 * 注意:Windows Runtime Component 项目会生成 .winmd 文件,winmd - Windows Metadata,其是语言无关的
 */

using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;

namespace NativeDemo.Demo
{
    public sealed partial class Simple : Page
    {
        public Simple()
        {
            this.InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            // 调用 C++ 中的函数
            NativeDll.Simple simple = new NativeDll.Simple();
            int result = simple.Add(1, 1);

            lblMsg.Text = "1 + 1 = " + result.ToString();
        }
    }
}

readme.txt

1、为了使用 C 语言,需要选中相应的 .c 文件 -> 右键 -> 属性 -> c/c++ -> 高级 -> 编译为 -> 编译为 C++ 代码(/TP)
2、比如你要用 strcpy 的话,在 vs 中会警告你,要求你用 strcpy_s,但是 strcpy_s 是微软自己的,为了去掉这个警告可以这么做:
  a) 在文件开头定义  #define _CRT_SECURE_NO_WARNINGS
  b) 或者一劳永逸的方法:dll 项目 -> 右键 -> 属性 -> c/c++ -> 预处理器 -> 在“预处理器定义”增加 “_CRT_SECURE_NO_WARNINGS”
3、调试本地代码:选中解决方案 -> 右键 -> 属性 -> 调试 -> 调试器类型 -> 选中“混合(托管和本机)”
4、如何在新建 c 代码时,默认保存为 utf-8 格式:在类似 D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcprojectitems 的目录下修改模板文件“hfile.h”和“newc++file.cpp”的文件格式为 utf-8

2、hello c
cHello.h

// c 的 .h 文件


// 头文件一般用于放置:需要向外暴露的宏定义,全局变量声明,函数声明


// 防止同一文件的二次编译。比如你有两个 c 文件,这两个 c 文件都 include 了同一个头文件,在编译时,这两个 c 文件就会被一同编译,那么就带来了声明冲突的问题
#ifndef _MYHEAD_HELLO_ // 是 if not defined 的缩写,如果没定义 _MYHEAD_HELLO_ 则执行这一块
#define _MYHEAD_HELLO_ // 定义 _MYHEAD_HELLO_





// 在 c++ 中写 c 语言代码
#ifdef __cplusplus // 如果当前是 c++ 环境
extern "C" // 告诉 c++ 下面的 { } 块中写的是 c 语言代码
{
#endif

    // 函数声明
    char *demo_cHello(char *name);

#ifdef __cplusplus // 如果当前是 c++ 环境
}
#endif





/*
// 在 windows 环境下,可以简写成这样
#ifdef __cplusplus
extern "C"
#endif

char *demo_cHello(char *name);
*/





#endif // #ifndef _MYHEAD_HELLO_

cHello.c

/*
 * hello c
 */

#include "pch.h" // 预编译头文件
#include "cHello.h" // 引入需要实现的头文件
#include "cHelper.h" // 引入自定义函数的头文件

char *demo_cHello(char *name)
{
    return str_concat2("hello: ", name);
}



// 本 demo 无法演示 main 函数,所以以下做一些关于 main 函数的文字说明

// main 函数是入口函数,不能被其它函数调用
// 假设命令为:可执行文件名 参数1 参数2 参数3
int main(int argc, char *argv[]) // main 函数也可以是无参无返回值的,即:int main(void) { } 或 void main(void) { } 都是可以的
{
    // argc 是参数个数;argv 是参数值

    // argc - 等于 4 (注:“可执行文件名”也算一个参数)
    // argv[0] - 可执行文件名; argv[1] - 参数1; argv[2] - 参数2; argv[3] - 参数3

    // 返回 0 代表正常
    return 0; 
}

中动用aria2c进行下载并出示进程条,不可缺少。OK
[源码下载]

Windows Native (1),windowsnative
[源码下载] 不可或缺 Windows Native (一) – C 语言: hello c 笔者:webabcd
介绍 至关重要 Windows Native之 C 语言 在…

C#中利用aria二c进行下载并出示进度条 – 云平台知识库 – 乐乎

文件准备:

linux-贰.6.1四.tar.bz二下载地址:

arm-linux-gcc-3.4.1.tar.bz2
http://www.linuxidc.com/Linux/2010-07/26990.htm

gcc四.壹(包括文件cpp-四.一_4.1.2-27Ubuntu1_i386.deb、g++-4.1_4.1.2-27ubuntu1_i386.deb、gcc-4.1_4.1.2-27ubuntu1_i386.deb、gcc-4.1-base_4.1.2-27ubuntu1_i386.deb、libstdc++6-4.1-dev_4.1.2-27ubuntu1_i386.deb)下载

busybox-1.19.2.tar.bz2
http://www.linuxidc.com/Linux/2011-08/40704.htm

skyeye-1.2.4_Rel.tar.gz
cs8900.c、cs8900.h、dev_net_cs8900a.c下载见

无需付费下载地址在

用户名与密码都以www.linuxidc.com

切切实实下载目录在 /二〇一一年资料/4月/六日/在SkyEye上运营ARubiconM Linux图解教程/

 

总结是:
壹,一样就跳到函数的上马:(借使都以左括号还是都以右括号),差异就跳到函数的最后:
     { 和 } 用来跳到函数的开始。
     [] 和 ][ 用来跳到函数的尾声。
二,左右左右,“左”在后面。前后左右,“前”也在前头。由此左括号打头则代表向前,右括号打头则代表向后:
     [[ 和 [] 用来向前跳
     ]] 和 ][ 用来向后跳

 

详尽步骤:

组成起来正是:
[[
用来跳到光标前边的1个函数初步处。借使光标在函数体内的话,这正是所在函数的始发处。
][
用来跳到光标前边的三个函数结尾处。倘若光标在函数体内的话,那就是所在函数的结尾处。
]]
用来跳到光标后边的一个函数起首处。假如光标在函数体内的话,那就是下二个函数的始发处。
[]
用来跳到光标后面包车型地铁3个函数结尾处。假设光标在函数体内的话,那正是上二个函数的结尾处。

正则表达式的生成网站:

1 编译linux-2.6.14.tar.bz2

将arm-linux-gcc-叁.四.壹.tar.bz二解压,将中间的arm目录移动到/usr/local下。

将linux-2.六.14.tar.bz贰解压到职业目录。

上面编写翻译linux:

1)修改Makefile,ARCH ?= arm CROSS_COMPILE ?=
/usr/local/arm/3.4.1/bin/arm-linux-

2)make smdk2410_defconfig

三)为内核加多cs87900网卡驱动以援救NFS

4858.com 1

4858.com 2

4858.com 3

4858.com 4

4858.com 5

四)修改内核文件

4858.com 6

5)裁剪/定制内核

4858.com 7

makemenuconfig进度中只怕提醒需You must install ncurses-devel in
order,消除办法是:apt-get install libncurses伍-dev。

4858.com 8

6) 编译

Make,在linux顶目录生成vmlinux文件,那正是所急需的arm-linux内核。编写翻译结果如下:

4858.com 9

4858.com 10

一,先想是想往前跳,依然未来跳?
比方是想往前,就摁 [,假诺是想以往,就摁 ],然后指头别松手。
二,再想是想开初步处,照旧结尾处?
设若是开端处,就再摁一下。假如是结尾处,就摁另2个键。

“cscope find”的用法:

 Aria二c下载地址:

    cs find c|d|e|f|g|i|s|t name
    0 或 s 查找本 C 符号(能够跳过注释)
    一 或 g 查找本定义
    2 或 d 查找本函数调用的函数
    三 或 c 查找调用本函数的函数
    四 或 t 查找本字符串
    6 或 e 查找本 egrep 模式
    七 或 f 查找本文件
    八 或 i 查找蕴涵本文件的文件

可是哪个人也不想敲这么多命令吧,所以本人在vimrc中国建工业总会集团了那样2个辉映:

封存的任务:程序运营目录/Download

nmap <C-@>s :cs find s
<C-R>=expand(“<cword>”)<CR><CR>:copen<CR>
nmap <C-@>g :cs find g
<C-R>=expand(“<cword>”)<CR><CR>
nmap <C-@>c :cs find c
<C-R>=expand(“<cword>”)<CR><CR>:copen<CR>
nmap <C-@>t :cs find t
<C-R>=expand(“<cword>”)<CR><CR>:copen<CR>
nmap <C-@>e :cs find e
<C-R>=expand(“<cword>”)<CR><CR>:copen<CR>
nmap <C-@>f :cs find f
<C-R>=expand(“<cfile>”)<CR><CR>:copen<CR>
nmap <C-@>i :cs find i
^<C-R>=expand(“<cfile>”)<CR>$<CR>:copen<CR>
nmap <C-@>d :cs find d
<C-R>=expand(“<cword>”)<CR><CR>:copen<CR>

 

实则正是参考 cscope_maps.vim
那一个文件,大家能够去下载她,然后间接放到plugin目录就行。

Program.cs

当光标停在有些你要物色的词上时, 按下<C-_>g, 正是探索该目的的定义,
其余的同理.
按那种组合键有少数技艺,按了<C-_>后要及时按下一个键,不然屏幕1闪就回到nomal状态了
<C-_>g的按法是先按”Ctrl Shift -“, 然后火速再按”g”

        static void Main(string[] args)
        {
            var url = "http://dldir1.qq.com/weixin/Windows/WeChatSetup.exe";
            if (url != "")
            {
                var fileName = url.Substring(url.LastIndexOf("/") + 1);
                var r = HttpDownLoad.DownloadFileByAria2(url, string.Format("{0}\\Download\\{1}", Directory.GetCurrentDirectory(), fileName));
                Console.WriteLine(r);
                Console.ReadLine();
            }
        }

vimcdoc.sourceforge.net
cscope.sourceforge.net

 

一、首先,我们要做的是生成cscope文件。
Windows和Linux下都一样,首先定位到你的源代码所在的目录。如果您的源文件里唯有.c和.h文件,那么运维上面包车型客车指令。
cscope -Rbq
就会生成cscope.out文件。
一经有.cpp的源文件,请参考下边包车型地铁步骤。Windows在本文下边下载find.exe程序,一时半刻替代系统自带的find.exe程序。在源代码目录下运作如下的通令:
find ./ -name “*.c” -o -name “*.cpp” -o -name “*.h” >
cscope.files
生成cscope.files后再运营命令:
cscope -bq
就会调换四个文本,cscope.out以外的别的四个是加快索引的。
346M -rw-rw-r–   1 op op 346M Apr 30 14:28 cscope.out
 71M -rw-rw-r–   1 op op  71M Apr 30 14:28 cscope.in.out
485M -rw-rw-r–   1 op op 485M Apr 30 14:28 cscope.po.out

 HttpDownLoad.cs

2、在vimrc里配置cscope的使用
第二,打开vimrc文件,那是vim的安顿文件。不知底的请参见本种类的前边几篇文章。
在vimrc文件里增加如下的说话:
“cscope设置
set cscopequickfix=s-,c-,d-,i-,t-,e-
cs a D:/minixsource/cscope.out D:/minixsource
本来,你得把门路改成你协调的源代码路线。好了,在指令行里输入:
:cs f g boot
就可以查阅boot()这些函数的定义了。再输入:
:cs f c boot
就足以查看boot()函数被调用的地点了。是否很便宜呢?但是你能够更利于的进展搜寻,利用急忙键!要使用急速键,我们还要对它进行陈设。在vimrc文件里再加多如下的话语:
nmap s :cs find s =expand(“”) :cw    “查找申明
nmap g :cs find g =expand(“”) :cw     “查找定义
nmap c :cs find c =expand(“”) :cw    “查找调用
nmap t :cs find t =expand(“”) :cw    “查找钦点的字符串
nmap e :cs find e =expand(“”) :cw   
“查找egrep情势,也正是egrep功用,但搜索速度快多了
nmap f :cs find f =expand(“”) :cw    “查找文件
nmap i :cs find i ^=expand(“”)$ :cw   “查找包涵本文件的文本
nmap d :cs find d =expand(“”)  :cw   “查找本函数调用的函数
应用方面包车型地铁火速键的主意是,将光标定位到你要物色的变量,函数名或许宏定义名处。先按下Ctrl+/,松手后神速按下相应的键,比如按下g,表示查找该函数可能变量的概念;按下c表示查找本函数被调用的地点。成效很庞大。

using System;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;

namespace ConsoleApplication2
{
    public class HttpDownLoad
    {
        /// <summary>
        /// 功能:使用Aria2c进行文件下载
        /// 作者:黄海
        /// 时间:2018-06-13
        /// </summary>
        /// <param name="url"></param>
        /// <param name="strFileName"></param>
        /// <returns></returns>
        public static bool DownloadFileByAria2(string url, string strFileName)
        {
            var tool = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\aria2-1.34.0-win-64bit-build1\\aria2c.exe";
            var fi = new FileInfo(strFileName);
            var command = " -c -s 10 -x 10  --file-allocation=none --check-certificate=false -d " + fi.DirectoryName + " -o " + fi.Name + " " + url;
            using (var p = new Process())
            {
                RedirectExcuteProcess(p, tool, command, (s, e) => ShowInfo(url,e.Data));
            }
            return File.Exists(strFileName) && new FileInfo(strFileName).Length>0;
        }
        private static void ShowInfo(string url,string a)
        {
            if (a == null) return;

            const string re1 = ".*?"; // Non-greedy match on filler
            const string re2 = "(\\(.*\\))"; // Round Braces 1

            var r = new Regex(re1 + re2, RegexOptions.IgnoreCase | RegexOptions.Singleline);
            var m = r.Match(a);
            if (m.Success)
            {
                var rbraces1 = m.Groups[1].ToString().Replace("(", "").Replace(")", "").Replace("%", "").Replace("s","0");
                if (rbraces1 == "OK")
                {
                    rbraces1 = "100";
                }
                Console.WriteLine(DateTime.Now.ToString().Replace("/","-")+"    "+url+"    下载进度:"+rbraces1+"%");
            }
        }

        /// <summary>
        /// 功能:重定向执行
        /// </summary>
        /// <param name="p"></param>
        /// <param name="exe"></param>
        /// <param name="arg"></param>
        /// <param name="output"></param>
        private static void RedirectExcuteProcess(Process p, string exe, string arg, DataReceivedEventHandler output)
        {
            p.StartInfo.FileName = exe;
            p.StartInfo.Arguments = arg;

            p.StartInfo.UseShellExecute = false;    //输出信息重定向
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.RedirectStandardOutput = true;

            p.OutputDataReceived += output;
            p.ErrorDataReceived += output;

            p.Start();                    //启动线程
            p.BeginOutputReadLine();
            p.BeginErrorReadLine();
            p.WaitForExit();            //等待进程结束
        }
    }
}

VIM + CSCOPE

分类:
LINUX系统使用与治本
2014-11-16 22:02 277人阅读 评论(0)
收藏 举报

在Windows下有繁多好用的IDE,比如Visual Studio(加上Visual Assist
差不离好用到没对象),或免费的source
insight,他们都使得看代码时,能够轻松的搜寻符号(变量,函数名,宏等)的定义与引用。

Linux下也有好多免费且壮大的IDE,诸如Eclipse,Code::Blocks,他们都急需10分的设置,进度只怕很麻烦。幸运的是,Linux上自带了CSCOPE,让我们轻巧浏览代码,查找符号的概念与引用。

CSCOPE是足以独立运作的,而由于VIM是主流编辑器,将他们组成在一同更便利,以下讲述的法子是将CSCOPE作为VIM的插件运维。

 

Pathogen

是因为要用到VIM插件,那里先引入3个插件管理工科具pathogen:

 从GitHub下载来,只要放到~/.vim/里就可以。那样pathogen.vim就存在于:
~/.vim/autoload/pathogen.vim

当有其余插件时,在~/.vim/bundle/下开创贰个索引,并将插件放入该目录即能运转。

比如cscope的插件cscope_maps.vim,创设1个目录~/.vim/bundle/cscope_maps/并将cscope_maps.vim放入:~/.vim/bundle/cscope_maps/plugin/中:

~/.vim/bundle/cscope_maps/plugin/cscope_maps.vim

 

CSCOPE

翻开一下本机是还是不是已安装cscope工具,在福睿斯HEL上可看出:

# rpm -qa|grep”cscope”

cscope-15.8-7.el7.x86_64

 

先看看CSCOPE的独自选拔:

cd 到某些目录,实践:

# Cscope -R

  • *

cscope即递归子目录中的文件,生成二个符号库文件cscope.out,并且还自行进入cscope的互相页面,如图呈现了cscope的命令集:

4858.com 11

可输入要寻觅的暗号定义或引用,用tab上下切换结果集和命令集。按 CT宝马X5L+d
退出该分界面。

 

生成符号库相关命令有:

-Tiggo 递归全部子目录中的文件。

-q
生成倒排索引,使得符号查找更加快,用那几个命令后会多生成多个文本:cscope.in.out,
cscope.po.out。

-b 生成符号库,但不活动进入互相分界面。

-i 从文件列表中生成符号库 (首要)。

 

从文件列表生成符号库:

CSCOPE私下认可只认 *.h, *.c
文件,那借使任何诸如C++或JAVA工程难道就不能够用了?假设是那样,那它也不值得被这么大规模推介了。幸亏它提供了–i
选项,对于此外工程,我们先生成两个文件列表。比如C++,那么些列表包蕴文件类型为
*.h, *.c, *.cpp, *.hpp:

# find . -name “\.c” -o -name
“*.cpp”-o -name “*.hpp” -o -name “*.h” > cscope.files*

 

接下来用钦命的文本列表生成符号库:

# cscope -q -b -i cscope.files

 

和VIM集成:

前方说过CSCOPE能够单独选用,它和VIM集成不外乎在VIM里用急迅键或指令完结符号的查找,即上述交互分界面包车型地铁效应。

 

步骤:

(1)      下载cscope插件:

(贰)      按pathogen的须要插手相应目录。

(3)      用VIM展开文件,那么,在VIM里CSCOPE怎样驾驭符号文件cscope.out在哪吧?查看cscope_maps.vim,可观看壹段脚本:

" add any cscope database in current directory

if fileradable("cscope.out")

cs add cscope.out

" else add the database pointed to by environment variable

elseif $CSCOPE_DB  != ""

    cs add $CSCOPE_DB

endif

 

可见CSCOPE会自动加载文件所在目录下的符号库,假使未有,则尝试环境变量$CSCOPE_DB
所定义的符号库。我们能够选1种方法。

要是期望集中管理三个档次的符号库,能够设置环境变量$CSCOPE_DB
,为了使该变量永恒有效,将其出席/etc/profile里:

export
CSCOPE_DB=”/cscope_symbols/project_1/cscope.out”

封存退出后重载一下陈设:

# source /etc/profile

 

(四) 那时,展开VIM,查看已加载的符号库:

:cs show

 

用add还可增添别的库:

:cs add [symbol_path]

 

(五) 这时,能够用命令或急速键达成符号查找了,比如命令查找my_variable:

:cs f s my_variable

 

中间: f 表示find;s表示符号,g表示查找定义,c查找函数调用者,愈多请
:help cscope.

除此以外,改 :cs 为 :scs 则切分窗口显示将跳转到的搜寻。

快捷键:

打开~/.vim/bundle/cscope_maps/plugin/cscope_maps.vim,可旁观它定义了1多级急忙键来贯彻上述的号子查找:

    nmap <C-\>s :cs find s
<C-R>=expand(“<cword>”)<CR><CR>          
    nmap <C-\>g :cs find g
<C-R>=expand(“<cword>”)<CR><CR>          
    nmap <C-\>c :cs find c
<C-R>=expand(“<cword>”)<CR><CR>                                                    
 
    nmap <C-\>t :cs find t
<C-R>=expand(“<cword>”)<CR><CR>                                                    
 
    nmap <C-\>e :cs find e
<C-R>=expand(“<cword>”)<CR><CR>          
    nmap <C-\>f :cs find f
<C-R>=expand(“<cfile>”)<CR><CR>          
    nmap <C-\>i :cs find i
^<C-R>=expand(“<cfile>”)<CR>$<CR>
    nmap <C-\>d :cs find d
<C-R>=expand(“<cword>”)<CR><CR>

在VIM中,当光标停在某符号上,按:

CTRL+\, 然后按‘s’,即为对应的指令:cs f s [symbol]

CTRL+\, g, 即为 :cs f g [symbol]

CTRL+\, c, 即为 :cs f c [symbol]

将 ‘\’换到空格,则对应了:scs,比如:

CTRL+空格,s,即为 :scsf s [symbol]

 

Tips:

(壹) 假使进入了VIM发现符号查找未有结果,检查一下符号库是还是不是科学加载了
:cs show

(二) VIM运营时恐怕会警告:找到三个符号库:

line 45:E568: duplicate cscope database not added

想要屏蔽该警告,修改~/.vim/bundle/cscope_maps/plugin/cscope_maps.vim:

将:**4858.com ,*


set cscopeverbose

改为:

set nocscopeverbose

 

 

参考文献:

(1)    The Vim/Cscope tutorial:

(2)    Cscope – A developer’s tool forbrowsing source code):

(3)    Avoiding duplicate cscope databaseerror within VIM:

 

 

~/.vimrc文件增添上边内容:

nmap <C-_>s :cs find s
<C-R>=expand(“<cword>”)<CR><CR>
nmap <C-_>g :cs find g
<C-R>=expand(“<cword>”)<CR><CR>
nmap <C-_>c :cs find c
<C-R>=expand(“<cword>”)<CR><CR>
nmap <C-_>t :cs find t
<C-R>=expand(“<cword>”)<CR><CR>
nmap <C-_>e :cs find e
<C-R>=expand(“<cword>”)<CR><CR>
nmap <C-_>f :cs find f
<C-R>=expand(“<cfile>”)<CR><CR>
nmap <C-_>i :cs find i
<C-R>=expand(“<cfile>”)<CR><CR>
nmap <C-_>d :cs find d
<C-R>=expand(“<cword>”)<CR><CR>
~                                                                                                                                                                                                                                          
 
~                                                                    

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有