参考链接:Building Weston

https://gitee.com/slamdunk1016/weston_demo.git


1、首先设置环境变量

写个简单的set-env.sh脚本方便运行:

#!/bin/bashexport WLD=/home/your_user_name/work/weston/install   # change this to another location if you prefer
export LD_LIBRARY_PATH=$WLD/lib/x86_64-linux-gnu
export PKG_CONFIG_PATH=$WLD/lib/x86_64-linux-gnu/pkgconfig/:$WLD/share/pkgconfig/
export ACLOCAL_PATH=$WLD/share/aclocal
export PATH=$WLD/bin:$PATH

2、安装软件包

ubuntu20.04下直接sudo apt-get install即可

sudo apt install libxml2 libxml2-dev xdot xmlto libjpeg-dev libwebp-dev libsystemd-dev liblcms2-dev libegl-mesa0 libgbm-dev freerdp2-dev
libx11-xcb-dev libxcb-composite0 libcolord-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libpipewire-0.3-dev
sudo apt install python3-pippip3 install --user meson

3、编译源码

目录结构主要包括以下几个部分:

install是新建目录,对应第一步中环境变量$WLD,其它都是源码目录

1)Wayland libraries

git clone https://gitlab.freedesktop.org/wayland/wayland.git
cd wayland
meson build/ --prefix=$WLD
ninja -C build/ install
cd ..

2)wayland protocols

git clone https://gitlab.freedesktop.org/wayland/wayland-protocols.git
cd wayland-protocols
meson build/ --prefix=$WLD
ninja -C build/ install

3)libinput

sudo apt install libmtdev-dev libudev-dev libevdev-dev libwacom-dev check libgtk-3-dev libunwind8-dev libcairo2-dev
git clone git://anongit.freedesktop.org/wayland/libinput
cd libinput
meson build/ --prefix=$WLD
ninja -C build/ install
cd ..

4)weston demo

git clone https://gitlab.freedesktop.org/wayland/weston.git
cd weston
meson build/ --prefix=$WLD -Dpipewire=false
ninja -C build/ install
cd ..

使用meson 重新配置时可以加上reconfig参数,如果没起效果最好把build目录删掉重新配置。

#$meson --reconfig build/ --prefix=$WLD  -Drenderer-gl=false -Dbackend-rdp=false -Dxwayland=false -Dcolor-management-colord=false -Dremoting=false -Dpipewire=false  -Dsimple-dmabuf-drm=auto

4、运行weston

编译好的weston在install/bin/目录下:

1)首先设置一下weston.ini配置文件

将编译出来的weston.ini文件copy到/home/.config/weston.ini

weston_demo$ find -name weston.ini
./weston/build/ivi-shell/weston.ini
./weston/build/compositor/weston.ini

cp ./weston/build/ivi-shell/weston.ini ~/.config/

[core]
shell=ivi-shell.so
modules=hmi-controller.so[ivi-shell]
ivi-shell-user-interface=weston-ivi-shell-user-interface#developermode=truecursor-theme=default
cursor-size=32base-layer-id=1000
base-layer-id-offset=10000workspace-background-layer-id=2000
workspace-layer-id=3000
application-layer-id=4000transition-duration=300background-image=/home/yc/work/weston/install/share/weston/background.png
background-id=1001
panel-image=/home/yc/work/weston/install/share/weston/panel.png
panel-id=1002
surface-id-offset=10
tiling-image=/home/yc/work/weston/install/share/weston/tiling.png
tiling-id=1003
sidebyside-image=/home/yc/work/weston/install/share/weston/sidebyside.png
sidebyside-id=1004
fullscreen-image=/home/yc/work/weston/install/share/weston/fullscreen.png
fullscreen-id=1005
random-image=/home/yc/work/weston/install/share/weston/random.png
random-id=1006
home-image=/home/yc/work/weston/install/share/weston/home.png
home-id=1007
workspace-background-color=0x99000000
workspace-background-id=2001[ivi-launcher]
workspace-id=0
icon-id=4001
icon=/home/yc/work/weston/install/share/weston/icon_ivi_flower.png
path=/home/yc/work/weston/install/bin/weston-flower[ivi-launcher]
workspace-id=0
icon-id=4002
icon=/home/yc/work/weston/install/share/weston/icon_ivi_clickdot.png
path=/home/yc/work/weston/install/bin/weston-clickdot[ivi-launcher]
workspace-id=1
icon-id=4003
icon=/home/yc/work/weston/install/share/weston/icon_ivi_simple-egl.png
path=/home/yc/work/weston/install/bin/weston-simple-egl[ivi-launcher]
workspace-id=1
icon-id=4004
icon=/home/yc/work/weston/install/share/weston/icon_ivi_simple-shm.png
path=/home/yc/work/weston/install/bin/weston-simple-shm[ivi-launcher]
workspace-id=2
icon-id=4005
icon=/home/yc/work/weston/install/share/weston/icon_ivi_smoke.png
path=/home/yc/work/weston/install/bin/weston-smoke[ivi-launcher]
workspace-id=3
icon-id=4006
icon=/home/yc/work/weston/install/share/weston/icon_ivi_flower.png
path=/home/yc/work/weston/install/bin/weston-flower[ivi-launcher]
workspace-id=3
icon-id=4007
icon=/home/yc/work/weston/install/share/weston/icon_ivi_clickdot.png
path=/home/yc/work/weston/install/bin/weston-clickdot[ivi-launcher]
workspace-id=3
icon-id=4008
icon=/home/yc/work/weston/install/share/weston/icon_ivi_simple-egl.png
path=/home/yc/work/weston/install/bin/weston-simple-egl[ivi-launcher]
workspace-id=3
icon-id=4009
icon=/home/yc/work/weston/install/share/weston/icon_ivi_simple-shm.png
path=/home/yc/work/weston/install/bin/weston-simple-shm[ivi-launcher]
workspace-id=3
icon-id=4010
icon=/home/yc/work/weston/install/share/weston/icon_ivi_smoke.png
path=/home/yc/work/weston/install/bin/weston-smoke

2)在命令行直接运行weston命令

我这里默认使用X11作为backend:

weston$ weston
Date: 2022-02-28 CST
[19:22:20.882] weston 10.0.90https://wayland.freedesktop.orgBug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/Build: 10.0.0-45-g08dbd29e
[19:22:20.882] Command line: weston
[19:22:20.882] OS: Linux, 5.13.0-30-generic, #33~20.04.1-Ubuntu SMP Mon Feb 7 14:25:10 UTC 2022, x86_64
[19:22:20.882] Flight recorder: enabled
[19:22:20.882] Using config file '/home/yc/.config/weston.ini'
[19:22:20.883] Output repaint window is 7 ms maximum.
[19:22:20.883] Loading module '/home/yc/work/weston/install/lib/x86_64-linux-gnu/libweston-11/x11-backend.so'
[19:22:20.884] Loading module '/home/yc/work/weston/install/lib/x86_64-linux-gnu/libweston-11/gl-renderer.so'
[19:22:20.887] EGL client extensions: EGL_EXT_platform_base EGL_EXT_device_baseEGL_EXT_device_enumeration EGL_EXT_device_queryEGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensionsEGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11EGL_EXT_platform_device EGL_EXT_platform_waylandEGL_KHR_platform_wayland EGL_MESA_platform_xcbEGL_MESA_platform_gbm EGL_KHR_platform_gbmEGL_MESA_platform_surfaceless
[19:22:20.889] EGL device extensions: EGL_NV_device_cuda EGL_EXT_device_drmEGL_EXT_device_query_name
[19:22:20.889] EGL version: 1.5
[19:22:20.889] EGL vendor: NVIDIA
[19:22:20.889] EGL client APIs: OpenGL_ES OpenGL
[19:22:20.889] EGL extensions: EGL_EXT_buffer_age EGL_EXT_client_syncEGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_importEGL_EXT_image_dma_buf_import_modifiersEGL_MESA_image_dma_buf_export EGL_EXT_output_baseEGL_EXT_stream_acquire_mode EGL_EXT_sync_reuseEGL_IMG_context_priority EGL_KHR_config_attribsEGL_KHR_create_context_no_error EGL_KHR_context_flush_controlEGL_KHR_create_context EGL_KHR_fence_syncEGL_KHR_get_all_proc_addresses EGL_KHR_partial_updateEGL_KHR_swap_buffers_with_damage EGL_KHR_no_config_contextEGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_imageEGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_imageEGL_KHR_gl_texture_cubemap_image EGL_KHR_imageEGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_reusable_syncEGL_KHR_stream EGL_KHR_stream_attribEGL_KHR_stream_consumer_gltextureEGL_KHR_stream_cross_process_fd EGL_KHR_stream_fifoEGL_KHR_stream_producer_eglsurface EGL_KHR_surfaceless_contextEGL_KHR_wait_sync EGL_NV_nvrm_fence_sync EGL_NV_post_sub_bufferEGL_NV_quadruple_buffer EGL_NV_stream_consumer_eglimageEGL_NV_stream_cross_display EGL_NV_stream_cross_objectEGL_NV_stream_cross_process EGL_NV_stream_cross_systemEGL_NV_stream_dma EGL_NV_stream_flush EGL_NV_stream_metadataEGL_NV_stream_remote EGL_NV_stream_reset EGL_NV_stream_socketEGL_NV_stream_socket_inet EGL_NV_stream_socket_unixEGL_NV_stream_sync EGL_NV_stream_fifo_nextEGL_NV_stream_fifo_synchronousEGL_NV_stream_consumer_gltexture_yuv EGL_NV_stream_attribEGL_NV_stream_origin EGL_NV_system_timeEGL_NV_output_drm_flip_event EGL_NV_triple_bufferEGL_NV_robustness_video_memory_purge
[19:22:20.889] warning: Disabling render GPU timeline and explicit synchronization due to missing EGL_ANDROID_native_fence_sync extension
[19:22:20.890] EGL_KHR_surfaceless_context available
[19:22:20.918] GL version: OpenGL ES 3.2 NVIDIA 470.103.01
[19:22:20.918] GLSL version: OpenGL ES GLSL ES 3.20
[19:22:20.918] GL vendor: NVIDIA Corporation
[19:22:20.918] GL renderer: NVIDIA GeForce GT 730/PCIe/SSE2
[19:22:20.918] GL extensions: GL_EXT_base_instance GL_EXT_blend_func_extendedGL_EXT_blend_minmax GL_EXT_buffer_storage GL_EXT_clear_textureGL_EXT_clip_control GL_EXT_clip_cull_distanceGL_EXT_color_buffer_float GL_EXT_color_buffer_half_floatGL_EXT_conservative_depth GL_EXT_copy_image GL_EXT_depth_clampGL_EXT_debug_label GL_EXT_discard_framebufferGL_EXT_disjoint_timer_query GL_EXT_draw_buffers_indexedGL_EXT_draw_elements_base_vertex GL_EXT_EGL_image_arrayGL_EXT_EGL_image_storage GL_EXT_EGL_image_external_wrap_modesGL_EXT_float_blend GL_EXT_frag_depth GL_EXT_geometry_point_sizeGL_EXT_geometry_shader GL_EXT_gpu_shader5GL_EXT_map_buffer_range GL_EXT_multi_draw_indirectGL_EXT_multisample_compatibilityGL_EXT_multiview_texture_multisampleGL_EXT_multiview_timer_query GL_EXT_occlusion_query_booleanGL_EXT_polygon_offset_clamp GL_EXT_primitive_bounding_boxGL_EXT_render_snorm GL_EXT_robustnessGL_EXT_separate_shader_objects GL_EXT_shader_group_voteGL_EXT_shader_implicit_conversions GL_EXT_shader_integer_mixGL_EXT_shader_io_blocksGL_EXT_shader_non_constant_global_initializersGL_EXT_shader_texture_lod GL_EXT_shadow_samplersGL_EXT_sparse_texture GL_EXT_sRGB GL_EXT_sRGB_write_controlGL_EXT_tessellation_point_size GL_EXT_tessellation_shaderGL_EXT_texture_border_clamp GL_EXT_texture_bufferGL_EXT_texture_compression_bptc GL_EXT_texture_compression_dxt1GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tcGL_EXT_texture_cube_map_array GL_EXT_texture_filter_anisotropicGL_EXT_texture_format_BGRA8888GL_EXT_texture_mirror_clamp_to_edge GL_EXT_texture_norm16GL_EXT_texture_query_lod GL_EXT_texture_rgGL_EXT_texture_shadow_lod GL_EXT_texture_sRGB_R8GL_EXT_texture_sRGB_decode GL_EXT_texture_storageGL_EXT_texture_view GL_EXT_draw_transform_feedbackGL_EXT_unpack_subimage GL_EXT_window_rectanglesGL_KHR_context_flush_control GL_KHR_debug GL_EXT_memory_objectGL_EXT_memory_object_fd GL_KHR_parallel_shader_compileGL_KHR_no_error GL_KHR_robust_buffer_access_behaviorGL_KHR_robustness GL_EXT_semaphore GL_EXT_semaphore_fdGL_NV_timeline_semaphore GL_KHR_shader_subgroupGL_KHR_texture_compression_astc_ldrGL_KHR_texture_compression_astc_sliced_3dGL_KHR_texture_compression_astc_hdr GL_NV_bgrGL_NV_bindless_texture GL_NV_blend_equation_advancedGL_NV_conditional_render GL_NV_copy_buffer GL_NV_copy_imageGL_NV_draw_buffers GL_NV_draw_instanced GL_NV_draw_textureGL_NV_draw_vulkan_image GL_NV_EGL_stream_consumer_externalGL_NV_explicit_attrib_location GL_NV_fbo_color_attachmentsGL_NV_framebuffer_blit GL_NV_framebuffer_multisampleGL_NV_generate_mipmap_sRGB GL_NV_instanced_arraysGL_NV_internalformat_sample_query GL_NV_gpu_shader5GL_NV_image_formats GL_NV_occlusion_query_samplesGL_NV_non_square_matrices GL_NV_pack_subimageGL_NV_packed_float GL_NV_packed_float_linearGL_NV_path_rendering GL_NV_pixel_buffer_objectGL_NV_polygon_mode GL_NV_read_buffer GL_NV_read_depthGL_NV_read_depth_stencil GL_NV_read_stencilGL_NV_shader_noperspective_interpolationGL_NV_shader_subgroup_partitioned GL_NV_shadow_samplers_arrayGL_NV_shadow_samplers_cube GL_NV_sRGB_formatsGL_NV_texture_array GL_NV_texture_barrierGL_NV_texture_border_clamp GL_NV_texture_compression_latcGL_NV_texture_compression_s3tcGL_NV_texture_compression_s3tc_update GL_NV_timer_queryGL_NV_viewport_array GL_KHR_blend_equation_advancedGL_OES_compressed_ETC1_RGB8_textureGL_EXT_compressed_ETC1_RGB8_sub_texture GL_OES_depth24GL_OES_depth32 GL_OES_depth_textureGL_OES_depth_texture_cube_map GL_OES_copy_imageGL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertexGL_OES_texture_border_clamp GL_OES_tessellation_point_sizeGL_OES_tessellation_shader GL_OES_texture_bufferGL_OES_geometry_point_size GL_OES_geometry_shaderGL_OES_gpu_shader5 GL_OES_shader_io_blocks GL_OES_texture_viewGL_OES_primitive_bounding_box GL_OES_EGL_imageGL_OES_EGL_image_external GL_OES_EGL_image_external_essl3GL_OES_EGL_sync GL_OES_element_index_uintGL_OES_fbo_render_mipmap GL_OES_get_program_binaryGL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8GL_OES_sample_shading GL_OES_sample_variablesGL_OES_shader_image_atomicGL_OES_shader_multisample_interpolationGL_OES_standard_derivatives GL_OES_surfaceless_contextGL_OES_texture_cube_map_array GL_OES_texture_npotGL_OES_texture_float GL_OES_texture_float_linearGL_OES_texture_half_float GL_OES_texture_half_float_linearGL_OES_texture_stencil8GL_OES_texture_storage_multisample_2d_arrayGL_OES_vertex_array_object GL_OES_vertex_half_floatGL_OES_viewport_array GL_OVR_multiview GL_OVR_multiview2GL_ANDROID_extension_pack_es31a
[19:22:20.919] GL ES 3.2 - renderer features:read-back format: RGBAEGL Wayland extension: no
[19:22:20.919] Using gl renderer
[19:22:20.921] XCB-XKB not available during build
[19:22:20.921] Registered plugin API 'weston_windowed_output_api_v1' of size 16
[19:22:20.921] Color manager: no-op
[19:22:20.921] Output 'screen0' using color profile: built-in default sRGB SDR profile
[19:22:20.921] Chosen EGL config details: id:  64 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 0-8 type: win|pix|pbf vis_id: 0x2b
[19:22:20.922] x11 output 1024x600, window id 136314886
[19:22:20.922] Output 'screen0' enabled with head(s) screen0
[19:22:20.922] Compositor capabilities:arbitrary surface rotation: yesscreen capture uses y-flip: yescursor planes: noarbitrary resolutions: noview mask clipping: yesexplicit sync: nocolor operations: yespresentation clock: CLOCK_MONOTONIC_RAW, id 4presentation clock resolution: 0.000000001 s
[19:22:20.922] Loading module '/home/yc/work/weston/install/lib/x86_64-linux-gnu/weston/ivi-shell.so'
[19:22:20.923] Note: support for the deprecated wl_shell interface is disabled. If a legacy client still needs it, it can be re-enabled by passing -Ddeprecated-wl-shell=true to Meson when building Weston.
[19:22:20.923] Registered plugin API 'ivi_layout_api_v1' of size 376
[19:22:20.923] Loading module '/home/yc/work/weston/install/lib/x86_64-linux-gnu/weston/hmi-controller.so'
[19:22:20.923] launching '/home/yc/work/weston/install/libexec/weston-ivi-shell-user-interface'

如果要用DRM作为backend,需要先切换到虚拟终端Ctrl+Alt+F4 /F3,再运行weston -B=drm-backend.so,测试结束后切回ubuntu 图形界面:Ctrl+Alt+F2

weston -B=drm-backend.so

如果不切换终端 会出现以下错误:

logind: cannot take control over session 2,ubuntu默认图形界面是session2,编译的weston程序应该是没有权限,需要换个会话。

$ weston -B=drm-backend.so
Date: 2022-03-01 CST
[09:48:24.541] weston 10.0.90https://wayland.freedesktop.orgBug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/Build: 10.0.0-45-g08dbd29e
[09:48:24.541] Command line: weston -B=drm-backend.so
[09:48:24.541] OS: Linux, 5.13.0-30-generic, #33~20.04.1-Ubuntu SMP Mon Feb 7 14:25:10 UTC 2022, x86_64
[09:48:24.541] Flight recorder: enabled
[09:48:24.541] Using config file '/home/yc/.config/weston.ini'
[09:48:24.541] Output repaint window is 7 ms maximum.
[09:48:24.541] Loading module '/home/yc/work/weston/install/lib/x86_64-linux-gnu/libweston-11/drm-backend.so'
[09:48:24.542] initializing drm backend
[09:48:24.542] Trying logind launcher...
[09:48:24.544] logind: cannot take control over session 2
[09:48:24.544] logind: cannot setup systemd-logind helper error: (Input/output error), using legacy fallback
[09:48:24.544] Trying weston_launch launcher...
[09:48:24.544] could not get launcher fd from env
[09:48:24.544] Trying direct launcher...
[09:48:24.544] fatal: drm backend should be run using weston-launch binary, or your system should provide the logind D-Bus API.
[09:48:24.544] fatal: failed to create compositor backend
Internal warning: debug scope 'drm-backend' has not been destroyed.

Tips:

ubuntu下查看会话

loginctl list-sessions

SESSION  UID USER      SEAT  TTY 197 1000 yc        seat0 tty32 1000 yc        seat0 tty2c1  125 gdm       seat0 tty13 sessions listed.

关闭会话:loginctl kill-session 197


Reference

​​​​​​https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)

Wayland/Weston 启动方式简介_hexiaolong2009的专栏-CSDN博客_weston

02-编译weston demo相关推荐

  1. Autosar代码包初识 3 - 创建RH850的GreenHills工程编译Autosar Demo工程

    GHS编译Autosar Demo工程目录 希望大家点赞,收藏,分享给感兴趣的伙伴 前言 一.GreenHills创建RH850工程 二.添加Demo工程文件到GHS工程 三.调整GHS顶层工程文件. ...

  2. opencv编译运行demo碰到的问题

    代码下载编译安装 $ git clone https://github.com/opencv/opencv.git $ cd opencv $ mkdir build $ cd build $ cma ...

  3. Qt开发笔记之Qwt(一):Qwt介绍、编译与Demo

    若该文为原创文章,未经允许不得转载 原博主博客地址:长沙红胖子_长沙红胖子网络科技有限公司_CSDN博客 原博主博客导航:红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术.树莓派.三维.Op ...

  4. Seetaface 02 Seetaface AndroidStudio Demo

    01 环境 win10x64 AndroidStudio2.3.3 cmake git 源码:https://github.com/5455945/SeetaFace-AS.git Fork自 htt ...

  5. [IJKPLAYER]编译与DEMO运行

    前言 系统:UBUNTU 16.04桌面版 编译步骤,主要还是参考README.md中Build Android的描述 Android/iOS video player based on FFmpeg ...

  6. Jpeglib开发笔记(一):JpegLib库介绍、windows编译和Demo

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/86155043 长期持续带来更多项目与技术分享 ...

  7. DuiLib学习笔记1.编译运行demo

    c++中皮肤问题比较麻烦,MFC自带的太难用.DirectUI界面库就比较强大了,之前像skin++之类的基于DirectUI收费昂贵.DuiLib是基于DirectUI的界面库,可以将用户界面和处理 ...

  8. libwebsocket 编译mini demo时遇到require lws_config

    记录一个今天遇到的问题,本来想编译libwebsocket的demo来进行但是发现编译时报错lws_config 后来在github 的Issue贴里面发现最开始安装的过程有问题, 正常步骤 cmak ...

  9. 在 ROS 系统下使用海康 SDK 并编译官方 demo

    文章目录 目录 文章目录 前言 一.配置ROS系统(以Ubuntu18.04  ROS Melodic版本为例)(以Ubuntu18.04  ROS Melodic版本为例) 1.配置 ROS 镜像源 ...

最新文章

  1. JavaScript中,this的绑定规则
  2. 《评人工智能如何走向新阶段》后记(深谈人工智能发展前沿)
  3. 僵尸网络病毒之BotNet扫盲、预防及清除
  4. Ubuntu16 安装Jira
  5. ntfs分配单元大小怎么选_星月菩提尺寸大小怎么选
  6. 数据服务基础能力之元数据管理
  7. 返回行javascript比较时间大小
  8. Linux如何查看所有的用户和组信息
  9. java虚拟机带键盘安卓版下载。_jvm1.5官方下载
  10. Easyrecovery13 for mac 官方版下载
  11. vmware虚拟机启动失败
  12. 农民工看完都学会了!Android开发岗还不会这些问题,跳槽薪资翻倍
  13. 幼儿课外活动游戏_这15个户外游戏,让你组织活动收放自如
  14. 从汇编指令解决浮点数疑问
  15. 在windows下实时监控、接受文件变化小工具
  16. Android自定义键盘之汉字键盘
  17. 【会议通知】关于召开第十届全国生物信息学与系统生物学学术大会的重要补充通知(第二轮)...
  18. SOW/Statement of Work 工作说明书
  19. 无线通信中的最大比合并(MRC)分析
  20. 机器学习和深度学习服务器配置建议

热门文章

  1. 【阿里云】WindowsServer2012 搭建FTP站点 图文记录
  2. windows功能_终于让我找到Windows原生日历最佳替代软件,功能强大到爆
  3. 微软EPG老大让秘书发给大家的邮件
  4. 社交网络——新一代数据挖掘的金矿
  5. 微积分(第三版)经济应用数学基础(一) 赵树嫄 编 中国人民大学出版社
  6. 【附源码】计算机毕业设计java学衡国学堂围棋社管理系统设计与实现
  7. 《乔布斯:遗失的访谈》观后感;《基地》第一部中的三次危机。
  8. 恢复你的IE-对某些网站恶意修改的恢复方法
  9. 九度 1341 -图最短路径 - 艾薇儿的演唱会
  10. 自制编程语言,六个令你迷惑的问题