DIrectFB学习资料.doc_第1页
DIrectFB学习资料.doc_第2页
DIrectFB学习资料.doc_第3页
DIrectFB学习资料.doc_第4页
DIrectFB学习资料.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文介绍了怎样生成一个最小(或接近最小)的DirectFB,以及相关的测试用例的安装和测试,对编译中的参数MMX,SSE,SDL,VNC的概念给出了较为详细的介绍实验平台:FC5(Fedora Core5)DirectFB-0.9.24(目前最新版本为0.9.25,为了开发的稳定性,选择0.9.24版本)下载源码:下载DirectFB-0.9.24.tar.gz源码开发包,下载地址为:/index.php?path=Main%2FDownloads&page=4;下载测试用例DirectFB-examples-0.9.23.tar.gz:源码包,下载地址为:/index.php?path=Main%2FDownloads&page=4;当然,也可以下载最新的安装和测试版本。安装DirectFB-0.9.24本例中将会在/usr目录下建立软件安装目录和测试用例目录,首先建立这两个目录$mkdir /usr/miniDirectFB$mkdir /usr/miniExample假设DirectFB-0.9.24.tar.gz下载到本地机器的位置为home目录,解压并进入该包$tar xvf DirectFB-0.9.24.tar.gz$cd DirectFB-0.9.24运行配置脚本,生成makefile文件$./configure -prefix=/usr/miniDirectFB -enable-mmx=no -enable-sse=no -enable-sdl=no -enable-gif=no -enable-jpeg=no -with-gfxdrivers=none -with-inputdrivers=none -without-tools -disable-fast-install -disable-libtool-lock -enable-png=no -enable-video4linux=no -disable-debug -disable-trace -enable-freetype=no注意,上面的参数和configure命令在同一行,各参数的含义详见后面附录部分。编译完成后的输出结果参照后面的附录。$make clean;make$make install修改/etc/ld.so.conf文件,加入你所安装的DirectFB库文件的位置,此例为/usr/ miniDirectFB/lib;$vi /etc/ld.so.conf添加usr/ miniDirectFB/lib保存退出$ldconfigLdconfig命令使得你刚加入的参数起作用,详细可以参考相关资料。安装测试用例假设DirectFB-examples-0.9.23.tar.gz下载到本地机器的位置为home目录,解压并进入该包$tar xvf DirectFB-examples-0.9.23.tar.gz$cd DirectFB-examples-0.9.23设置pkgconfig的目录(参考你的DirectFB安装目录)$export PKG_CONFIG_PATH=/usr/miniDirectFB/lib/pkgconfig编译安装测试用例:$./configure prefix=/usr/miniExample$make clean;make$make install安装完毕测试切换到一个终端下,设置相应的环境变量:$export LD_LIBRARY_PATH=/usr/miniDirectFB/lib运行测试用例$df_bltload$df_cpuload$df_dioload注意,这里运行的每一个例子,你都无法通过鼠标键盘正常退出,因为,我们生成的是一个最小(或者接近最小)的DirectFB,在configure中我们去掉了对输入设备的支持;当然,其它的例子我们基本上都不能运行,因为他们都需要输入或者gfxdrivers的支持,我们也去掉了,不过,看起来很简洁,可以更方便我们对DirectFB的认识。安装的测试用例可以在你安装的目录里找到,本例中为:/usr/miniExample/bin附录1 编译完成后,configure的输出结果Build options: Version 0.9.24 Install prefix /usr/miniDirectFB Build shared libs yes Build static libs no Module directory $exec_prefix/lib/directfb-0.9.24 CPPFLAGS -D_REENTRANT CFLAGS -Wall -O3 -ffast-math -pipe -D_GNU_SOURCE -Werror-implicit-function-declaration LDFLAGS LIBS -ldl -lpthread Misc options: Multi Application Core no Voodoo (network support) no Debug mode no Trace support no MMX support no SSE support no zlib compression no sysfs support noBuilding Core Systems: Linux FBDev support yes X11 support no OSX support no SDL support no VNC support noBuilding WM Modules: Default yes UniQuE noBuilding Tools noBuilding Image Providers: GIF no JPEG no MPEG2 I-Frame yes PNG noBuilding Video Providers: Video4Linux no (v2: no)Building Font implementations: FreeType2 Default font yesBuilding Graphics Drivers: 3Dfx Voodoo no ATI Mach64 no ATI Radeon no ATI Rage 128 no ATI R200 no Intel i810 no Intel i830 no Matrox no NeoMagic no NSC Geode no nVidia no S3 Savage no SiS 315 no TVIA CyberPro no VIA CLE266 no VIA UniChrome noBuilding Input Drivers: DBox2 Remote no DreamBox Remote no ELO Touchscreen no H3600 Touchscreen no Joystick no Keyboard no Linux Input no LiRC no MuTouch touchscreen no PS/2 Mouse no Serial Mouse no SonyPI Jogdial no ucb1x00 Touchscreen no WM97xx Touchscreen no附录2 安装后生成的共享库列表为libdirect-0.9.so.24.0.0libdirectfb-0.9.so.24.0.0libfusion-0.9.so.24libdirectfbwm_default.solibdirectfb_fbdev.solibidirectfbimageprovider_mpeg2.solibidirectfbfont_default.solibidirectfbvideoprovider_v4l.so附录三 使用rpm命令参看DirectFB的依赖关系rpm -qpR directfb-0.9.24-8.rhfc5.at.i386.rpmwarning: directfb-0.9.24-8.rhfc5.at.i386.rpm: Header V3 DSA signature: NOKEY, key ID 66534c2blibSDL-1.2.so.0 libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.3) libc.so.6(GLIBC_2.3.4) libc.so.6(GLIBC_2.4) libdirect-0.9.so.24 libdirectfb-0.9.so.24 libdl.so.2 libdl.so.2(GLIBC_2.1) libfreetype.so.6 libfusion-0.9.so.24 libjpeg.so.62 libm.so.6 libpng12.so.0 libpthread.so.0 libpthread.so.0(GLIBC_2.0) libpthread.so.0(GLIBC_2.1) libpthread.so.0(GLIBC_2.3.2) libz.so.1 rpmlib(CompressedFileNames) = 3.0.4-1rpmlib(PayloadFilesHavePrefix) = 4.0-1附录四 configure参数说明l -prefix=设定安装的目录,默认为/usr/locall -enable-mmx=的含义参照如下的解释:MMX(MultiMedia Extensions),多媒体扩展指令集。是在Intel微处理器和其它与x86兼容的微处理器中包含57个多媒体指令的一个集合。支持MMX的微处理器可以处理许多常见的多媒体操作,例如信号处理(DSP digital signal processing)就常用一个单独的声卡或显卡来处理。然而,只有调用MMX指令的软件所谓的支持MMX的软件才能发挥MMX指令集的优势。MMX技术用于加快多媒体和通信应用的运行速度。该技术加入了新的指令和数据类型,使应用达到更高水平的性能。它充分利用了许多多媒体和通信算法中固有的并行计算能力,同时还完全兼容现有的操作系统和应用。英特尔开发的最早期SIMD指令集,可以增强浮点和多媒体运算的速度。英文解释:Short for Multimedia Extensions, a set of 57 multimedia instructions built into Intel microprocessors and other x86-compatible microprocessors. MMX-enabled microprocessors can handle many common multimedia operations, such as digital signal processing (DSP), that are normally handled by a separate sound or video card. However, only software especially written to call MMX instructions - so-called MMX-enabled software - can take advantage of the MMX instruction set.l -enable-sse=的含义参照如下的解释:sse为PentiumIII级别以上的cpu启用SSE指令集优化支持;Streaming SIMD Extensions(SSE)和Streaming SIMD Extensions 2(SSE2)指令集,它们对Intel (R) 4的处理器有效用;Intel (R) Pentium 4处理器根据Intel (R) NetBurst TM 微架构(microarchitecture)。此架构从它的前一代(predecessors)提供新的强化,包括对SIMD(Single Instruction Multiple Data)执行技术的改善。SIMD在具MMX技术的Pentium处理器首次被介绍,在Pentium III处理器家族扩充成包含更多在Streaming SIMD Extensions (SSE)的数据集,而今天Pentium 4处理器则以Streaming SIMD Extensions (SSE) 包含了更多(的资料集)。 为了Interl NetBurst微架构发展的主要特性是从Pentium III处理器的P6微架构找到的指令集的扩充,以引入在双精度浮点数数据元素上的运算。此架构以它平行处理更多运算的能力,支持更多的数据,且更有效率。本文件的目标在于提供给不识此道者一堂SSE和SSE2的速成课(crash course),让你能快速地到达能开始在你的应用程序中实作SSE程序代码的水平。摘要:本文介绍了如果把一个DirectFB源程序文件编译一个可执行的文件,附带性的介绍了gcc的常见编译选项的应用。-声明: 此文为原创,欢迎转载,转载请保留如下信息 作者:聂飞(afreez) 联系方式: (欢迎与作者交流) 初次发布时间:2006-05-29 不经本人同意,不得用语商业或赢利性质目的,否则,作者有权追究相关责任!- 编程环境:调试环境:FC5(Fedora Core 5)、DirectFB.0.9.24或DirectFB.0.9.25安装信息:DirectFB不是默认的安装方式,安装路径为/usr/DirectFB25/DirectFB源程序程序名:draw_line.c功能:在屏幕中间画一条水平直线#include #include #include /这是最上层的接口,所有的函数入口均由它(IDirectFB)而来static IDirectFB *dfb = NULL;/主平面,也就是“屏幕”了。在交互层使用DFSCL_FULLSCREEN,它是主层平面。static IDirectFBSurface *primary = NULL;/这里存储主平面的高和宽,从而为其它的操作提供支持static int screen_width = 0;static int screen_height = 0;/用以检测错误的宏定义,用来检测大部分的函数的返回值是否正常。只适合用在小的测试程序#define DFBCHECK(x.) DFBResult err = x; if (err != DFB_OK) fprintf( stderr, %s :nt, _FILE_, _LINE_ ); DirectFBErrorFatal( #x, err ); int main (int argc, char *argv) /为了创建一个平面,需要定义一个平面描述子(surface description)DFBSurfaceDescription dsc;/初始化 DFBCHECK (DirectFBInit (&argc, &argv); DFBCHECK (DirectFBCreate (&dfb); DFBCHECK (dfb-SetCooperativeLevel (dfb, DFSCL_FULLSCREEN); /设定dsc的一些属性,现在可以不用关心 dsc.flags = DSDESC_CAPS; dsc.caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING; /使用我们设定的dsc创建主平面(primary) DFBCHECK (dfb-CreateSurface( dfb, &dsc, &primary ); /得到主平面的宽与高 DFBCHECK (primary-GetSize (primary, &screen_width, &screen_height); /通过画一个和主平面同等大小的矩形来清空主平面;默认颜色为黑色 DFBCHECK (primary-FillRectangle (primary, 0, 0, screen_width, screen_height); /为了能显示画出来的线,先设置一下线的颜色,线的位置在屏幕的中间DFBCHECK (primary-SetColor (primary, 0x80, 0x80, 0xff, 0xff); DFBCHECK (primary-DrawLine (primary,0, screen_height / 2,screen_width - 1, screen_height / 2); /显示 DFBCHECK (primary-Flip (primary, NULL, 0); /等待5秒后,程序自动退出 sleep (5); primary-Release( primary ); dfb-Release( dfb ); return 23;编译准备安装完DirectFB后,由于某种原因,我没有把/usr/DirectFB25/lib添加到配置文件/etc/ld.so.conf 中,所以,在进入(每一个)终端时,要设置两个环境变量,如下所示:$export PKG_CONFIG_PATH=/usr/DirectFB25/lib/pkgconfig/$export LD_LIBRARY_PATH=/usr/DirectFB25/lib编译为了详细分析其编译过程,先分析几个使用不当的编译过程,最后给出两中常用的编译方法。不当编译1:$gcc draw_line.c -o draw_line正常情况下,我们做一些练习时,常常使用如下的编译格式来编译:$gcc src.c o destination如果这里,我们同样使用这样的编译选项时,会出现类似如下的编译错误:draw_line.c:3:22: error: directfb.h: No such file or directorydraw_line.c:4: error: expected =, , ;, asm or _attribute_ before * tokendraw_line.c:5: error: expected =, , ;, asm or _attribute_ before * tokendraw_line.c: In function main:draw_line.c:20: error: DFBSurfaceDescription undeclared (first use in this function)draw_line.c:20: error: (Each undeclared identifier is reported only oncedraw_line.c:20: error: for each function it appears in.)draw_line.c:20: error: expected ; before dscdraw_line.c:21: error: DFBResult undeclared (first use in this function)draw_line.c:21: error: expected ; before err错误中显示了很多编译异常输出,最让人无法忍受的是竟然没有找到头文件directfb.h,编译DirectFB应用程序,可基本上都需要这个头文件的!怎么会找不到呢?使用$ls /usr/DirectFB25/include/directfb 查看一下,发现里面确实有directfb.h。那么,就是GCC没有找到该文件了,也就是说,gcc默认查找库文件的路径不包括:/usr/DirectFB25/include/directfb该路径是我安装的目录,如果不通知gcc的话,它是不会去这里找相关库文件及头文件的。好了,知道了异常输出的原因之后,我们改用下面的编译命令进行编译。不当编译2:$gcc -L/usr/DirectFB25/lib -I/usr/DirectFB25/include/directfb draw_line.c -o draw_line查看相关的gcc编译参数,我们可以知道其中的-L与-I的含义,相关含义大致如下:-I(大写的i)参数是用来指定头文件目录,/usr/include目录一般是不用指定的,gcc知道去那里找,但是如果头文件不在/usr/include里我们就要用-I参数指定了,比如头文件放在/not_usr目录里,那编译命令行就要加上- I/not_usr参数了,如果不加你会得到一个类似上面的异常输出。-I参数可以用相对路径,比如头文件在当前目录,可以用-I.来指定。-l(小写的L)参数就是用来指定程序要链接的库,-l参数紧接着就是库名。当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到 /usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里的函数,我们还需要与 libtest.so配套的头文件)。放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so,这时另外一个参数-L就派上用场了,比如常用的X11的库,它在 /usr/X11R6/lib目录下,我们编译时就要用-L/usr/X11R6/lib -lX11参数,-L参数跟着的是库文件所在的目录名。再比如我们把libtest.so放在/aaa/bbb/ccc目录下,那链接参数就是- L/aaa/bbb/ccc ltest。可是,即使这样来编译,还是会出现如下的类似异常输出信息,大致如下:/tmp/cc4yJt2K.o: In function main:draw_line.c:(.text+0x1e): undefined reference to DirectFBInit:draw_line.c:(.text+0x5f): undefined reference to DirectFBErrorFatal:draw_line.c:(.text+0x6b): undefined reference to DirectFBCreate:draw_line.c:(.text+0xac): undefined reference to DirectFBErrorFatal:draw_line.c:(.text+0x107): undefined reference to DirectFBErrorFatal:draw_line.c:(.text+0x178): undefined reference to DirectFBErrorFatal:draw_line.c:(.text+0x1db): undefined reference to DirectFBErrorFatal:draw_line.c:(.text+0x255): undefined reference to DirectFBErrorFatal/tmp/cc4yJt2K.o:draw_line.c:(.text+0x2c8): more undefined references to DirectFBErrorFatal followcollect2: ld returned 1 exit status这次,头文件directfb.h是找到了,可是,好多库的接口函数却没有找到!注意,此时的输出都是连接错误,已经没有了语法错误了。也就是说,我们写的这个draw_line.c源文件已经通过了预编译、编译和汇编阶段,只是最后的连接过程出现了异常。Gcc的处理过程会经历四个过程,分别为预处理(也称 预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking),详细介绍见相关资料。也就是说,我们现在只要解决连接的问题就ok了。那么如何才能找到我们需要的函数库的接口呢?如果你足够仔细的话,在安装DirectFB提供的事例(如:DirectFB-examples-0.9.23.tar.gz)的时候,其中会提级到一个文件,即directfb.pc。该文件记录了你的一些安装信息,现在让我们来看看它里面的内容把。$ more /usr/DirectFB25/lib/pkgconfig/directfb.pcprefix=/usr/DirectFB25exec_prefix=$prefixlibdir=$exec_prefix/libincludedir=$prefix/includeName: DirectFBDescription: Graphics and windowing library for the Linux frame buffer deviceVersion: 0.9.25Requires: fusion directLibs: -L$libdir -ldirectfb -lpthread -ldl -lzCflags: -D_REENTRANT -I$prefix/include/directfb里面详细记录了我们安装的路径、版本以及库的信息。特别注意里面有一行为:Libs: -L$libdir -ldirectfb -lpthread -ldl -lz乖乖,终于找到它了,呵呵。好了,我们再来编译一下把。正确的编译方式1$ gcc -L/usr/DirectFB25/lib -I/usr/DirectFB25/include/directfb -ldirectfb -lpthread -ldl -lz draw_line.c -o draw_line编译后,再也没有异常输出信息了,好了。终于成功了,还等什么?先去运行一下,看看效果吧!如果你已经欣赏完了你“自己”画的那条直线的话,那么,我们再来看看另一种简便的编译方法。正确的编译方式2$gcc pkg-config -cflags -libs directfb -o draw_text draw_text.c注意,这里的pkg-config -cflags -libs directfb两侧使用的不是单引号,而是键盘上数字键1左边的那个和“”一体的“”键符号;-libs 后面的包名directfb也不要忘记写,否则会出下类似如下的错误信息:Package directfb was not found in the pkg-config search path.Perhaps you should add the directory containing directfb.pcto the PKG_CONFIG_PATH environment variableNo package directfb found在编译DirectFB应用程序和库的时候,pkg-config是一个十分有用的工具,关于pkg-config的使用方法,详见:/wiki/补充:如果你安装的版本是DirectFB.0.9.25的话,在你用gcc编译时,可能会出现找不到libdirect-0.9.so.24或libdirectfb-0.9.so.24或libfusion-0.9.so.24的情况(反正我的机器是出现了)。查看你的libs位置:$ls /usr/DirectFB25/lib你会发现,其中的库的版本都是*.so.25,鬼才能找到什么*.so.24的连接库。不过,也没有关系了,有条件要上,没有条件,创造条件,也要上了。来,自己动手,丰衣足食吧。$cd /usr/DirectFB25/libln -s libdirect-0.9.so.25.0.0 libdirect-0.9.so.24ln -s libdirectfb-0.9.so.25.0.0 libdirectfb-0.9.so.24ln -s libfusion-0.9.so.25.0.0 libfusion-0.9.so.24Reference:1. 本文中的DirectFB画线应用程序来自:/docs/DirectFB_Tutorials/simple.html2Man page of gcc 使用$man gcc查看3Gcc相关的中文介绍,参照:/blog/archives/2005/03//doc/20454.html本文列出了framebuffer,linux framebuffer,directfb framebuffer的相关介绍,内容还会不断增加在学习DirectFB的过程中,其中很重要的一部分就是framebuffer的学习,下面把我收集到的一些自己认为比较有价值的文字列出,希望也对大家有帮助!-声明: 此文为原创,欢迎转载,转载请保留如下信息 作者:聂飞(afreez) 联系方式: (欢迎与作者交流) 初次发布时间:2006-06-06 不经本人同意,不得用语商业或赢利性质目的,否则,作者有权追究相关责任!-framebuffer相关知识总结Vesafb介绍VESA是Video Electronic Standards Association影像电子工程标准协会的缩写,由多家计算机芯片制造商于1989年联合创立,1994年底,VESA发表了64位架构的VESA Local Bus标准,80486以后的PC机大多采用这一标准的显卡。Vesafb is a framebuffer driver for Intel architecture that works with VESA 2.0 compliant graphic cards。Linear frame buffering simply means that the systems CPU is able to access every bit of the display.显卡简介显示适配卡(Video card,Graphics card),又称为显示适配器(video adapter),中国大陆简称为显卡或显示卡,香港与台湾简称为显示卡,是个人电脑最基本组成部分之一。-A|zh-cn:显卡;zh-tw:显示卡-的用途是将计算机系统所需要的显示信息进行转换驱动显示器,并向显示器提供行扫描信号,控制显示器的正确显示,是联接显示器和个人电脑主板的重要组件,是“人机对话”的重要设备之一。显卡是插在主板上的扩展槽里的(现在一般是PCI-E或AGP插槽)。它主要负责把主机向显示器发出的显示信号转化为一般电信号,使得显示器能明白个人电脑在让它干什么。显卡的主要芯片叫“显示芯片”(Video chipset,也叫GPU或VPU,图形处理器或视觉处理器),是显卡的主要处理单元。显卡上也有和电脑内存相似的存储器,称为“显示内存”,简称显存。早期的显卡只是单纯意义的显卡,只起到信号转换的作用;目前我们一般使用的显卡都带有3D画面运算和图形加速功能,所以也叫做“图形加速卡”。显卡通常由总线接口、PCB板、显示芯片、显存、RAMDAC、VGA BIOS、VGA功能插针、VGA插座及其它外围组件构成,现在的显卡大多还具有DVI显示器插头及S-video端子插头。ISA显卡ISA显卡是现在最普遍使用的VGA显示器所能支持的最为古老的显卡。 VESA显卡VESA是Video Electronic Standards Association影像电子工程标准协会的缩写,由多家计算机芯片制造商于1989年联合创立,1994年底,VESA发表了64位架构的VESA Local Bus标准,80486以后的PC机大多采用这一标准的显卡。 PCI显卡AGP显卡AGP(Accelerated Graphics Port)是Intel公司在1996年开发的32位总线接口,用来增进计算机系统中的显示效能。分有AGP 1X , AGP 2X ,AGP 4X 及最后的AGP 8X , 频宽分别为 266MB/s ,533MB/s ,1066MB/及2133 MB/s。其中 AGP 4X 以后已跟之前电压不兼容。性能最好的AGP显示卡是nVIDIA公司的GeForce 6800 Ultra 和ATi公司的Radeon X850 XT PE。PCI Express显卡PCI Express是显示卡最新的图形接口,用来取代AGP显示卡的,因为面对日后3D显示技术的不断进步,AGP的宽带已经不能再满足庞大的数据运算。目前性能最高的PCI-Express显示卡是Nvidia公司的GeForce 7800GTX 512MB和ATi公司的X1900XTX。此外, 现时部分显示卡可-zh-tw:支援;zh-cn:支持-双显示卡(nVidia的SLi和ATi的Crossfire). 当中, Crossfire大部分都需要一张子卡和一张主卡去运行, 但X1300就无此限制,而此限制也即将解封。MTRR含义MTRR (Memory Type Range Register) support (CONFIG_MTRR) N/y/? 选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。在Intel p6家族的处理器中(Ppro、 PII和更新的)有一个内存类型范围寄存器,可用来控制处理器访问的内存范围。打开它一般可以提升显卡的显示性能It speeds up memory copies between the processor and the graphic cardlinux framebuffer相关又学习到结构体初始化定义的一个绝招,具体如下:结构体定义(见/include/linux/fb.h)struct fb_fix_screeninfo char id16; /* identification string eg TT Builtin */ unsigned long smem_start; /* Start of frame buffer mem */ /* (physical address) */ _u32

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论