XCB是一个用于实现跨平台的高级图形接口的X Window系统的库,它定义了一组低级API,可以帮助客户端在Linux系统上开发X Windows应用程序。通过XCB,只需要使用少量的代码,就可以获得高质量的X Windows应用程序。
XCB可以很好地支持任何X Window系统 服务器 ,支持与多种X Window客户端之间的通信。它允许注册一个给定类型的客户端,并在接收和发送请求时使用nul终止字节,以确保客户端和服务器之间的格式一致。
XCB与传统的Xlib不同的是,它通过定义了一种映射类型,为不同类型的请求定义了映射,有助于改善XCB的性能。除此之外,XCB还支持安全的访问,即可以通过安全的库自动实现访问的控制。可以使用XCB定义事件协议来管理窗口、窗口结构、字体、配置,以及图像内存等。此外,XCB也可以实现输入设备操作、视频播放、媒体流传输等,以及基于网络的图形应用程序。
以下是一个以XCB 在Linux系统上实现窗口创建的示例代码:

int main(void)
xcb_connection_t *connection; // 建立连接
const xcb_setup_t *setup; // 获取服务器设置信息
xcb_screen_t *screen; // 获取屏幕信息
xcb_window_t window; // 创建窗口的编号
connection = xcb_connect(NULL, NULL); // 建立与XServer的连接
setup = xcb_get_setup(connection); // 获取服务器设置信息
screen = xcb_setup_roots_iterator(setup); // 获取屏幕信息
window = xcb_generate_id(connection); // 创建一个窗口
xcb_create_window(connection,
XCB_COPY_FROM_PARENT, // 窗口的深度与父窗口相同
window, // 新创建窗口的ID番号
screen->root, // 父窗口的ID番号
0, 0, // 窗口的x y 坐标
150, 150, // 窗口的宽度和高度
0, // 边框的厚度
XCB_WINDOW_CLASS_INPUT_OUTPUT, // 窗口的特性
screen->root_visual, // 窗口的可视化属性
0, NULL ); // 传入的参数
xcb_map_window(connection, window); // 显示窗口
xcb_flush(connection); // 将输出buffer刷新到XServer
xcb_disconnect(connection); // 关闭连接
以上就是XCB在Linux系统上的应用。通过XCB,开发者可以很容易地创建跨平台X Windows应用程序,而不需要太多的代码量。XCB想改善Xlib应用程序的性能,而且支持安全的访问和定义应用程序交互事件协议。可以说,XCB是一个非常有用的X Window系统库,对于构建X Windows应用程序至关重要。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
查看linux当前加载库文件的命令
ldd 查看可执行文件链接了哪些 系统动态链接库 nm 查看可执行文件里面有哪些符号 strip 去除符号表可以给可执行文件瘦身 如果我们想从可执行程序里面提取出来一点什么文本信息的话,还可以用strings命令 strings Linux操作系统上面的动态共享库大致分为三类: 1、操作系统级别的共享库和基础的系统工具库 比方说, , 等等,这些系统库会被放在/lib和/usr/lib目录下面,如果是64位操作系统,还会有/lib64和/usr /lib64目录。 如果操作系统带有图形界面,那么还会有/usr/X11R6/lib目录,如果是64位操作系统,还有/usr/X11R6 /lib64目录。 此外还可能有其他特定Linux版本的系统库目录。 这些系统库文件的完整和版本的正确,确保了Linux上面各种程序能够正常的运行。 2、应用程序级别的系统共享库 并非操作系统自带,但是可能被很多应用程序所共享的库,一般会被放在/usr/local/lib和/usr/local/lib64这两个目录下面。 很多你自行编译安装的程序都会在编译的时候自动把/usr/local/lib加入gcc的-L参数,而在运行的时候自动到/usr/local /lib下面去寻找共享库。 以上两类的动态共享库,应用程序会自动寻找到他们,并不需要你额外的设置和担心。 这是为什么呢?因为以上这些目录默认就被加入到动态链接程序的搜索路径里面了。 Linux的系统共享库搜索路径定义在/etc/这个配置文件里面。 这个文件的内容格式大致如下: /usr/X11R6/lib64 /usr/X11R6/lib /usr/local/lib /lib64 /lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/ImageMagick/lib 假设我们自己编译安装的ImageMagick图形库在/usr/local/ImageMagick目录下面,并且希望其他应用程序都可以使用 ImageMagick的动态共享库,那么我们只需要把/usr/local/ImageMagick/lib目录加入/etc/文件里面,然后执行:ldconfig 命令即可。 ldcofig将搜索以上所有的目录,为共享库建立一个缓存文件/etc/。 为了确认ldconfig已经搜索到ImageMagick的库,我们可以用上面介绍的strings命令从里面抽取文本信息来检查一下: strings /etc/ | grep ImageMagick 输出结果为: /usr/local/ImageMagick/lib/.10 /usr/local/ImageMagick/lib/ /usr/local/ImageMagick/lib/.10 /usr/local/ImageMagick/lib/ /usr/local/ImageMagick/lib/libMagick++.10 /usr/local/ImageMagick/lib/libMagick++ 已经成功了! 3、应用程序独享的动态共享库 有很多共享库只被特定的应用程序使用,那么就没有必要加入系统库路径,以免应用程序的共享库之间发生版本冲突。 因此Linux还可以通过设置环境变量LD_LIBRARY_PATH来临时指定应用程序的共享库搜索路径,就像我们上面举的那个例子一样,我们可以在应用程序的启动脚本里面预先设置 LD_LIBRARY_PATH,指定本应用程序附加的共享库搜索路径,从而让应用程序找到它。
学习ARM&LINUX嵌入式系统,需要哪些服务软件,详细介绍一下各种软件的功能和特点。
1、Linux 基础安装linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解。 2、Shell 编程基础Shell简介 认识后台程序Bash编程熟悉Linux系统下的编辑环境。 3、Linux 下的 C 编程基础linux C语言环境概述 Gcc使用方法 Gdb调试技术。 4、嵌入式系统开发基础嵌入式系统概述 交叉编译 配置TFTP服务 配置NFS服务 下载Bootloader和内核 嵌入式Linux应用软件开发。 4、嵌入式系统移植Linux内核代码 平台相关代码分析 ARM平台介绍 平台移植的关键技术 移植Linux内核到 ARM平台 了解移植的概念 能够移植Linux内核移植Linux2.6内核到 ARM9开发板。 5、嵌入式 Linux 下串口通信串行I/O的基本概念 嵌入式Linux应用软件开发流程 Linux系统的文件和设备。 6、嵌入式系统中多进程程序设计Linux系统进程概述 嵌入式系统的进程特点 进程操作 守护进程 相关的系统调用了解Linux系统中进程的概念。 ...网上很多~可以先从虚拟机玩起。 A.一般安装一个VMWARE虚拟机,再从网上下载个RedHat9.0的光盘镜像。 这个比较适合入门linux,当然也有Cygwin的,不过不推荐。 B.然后就可以按照上面的步骤学起来了,等把linux的shell和gcc,gdb,系统编程,gui(QT,miniGUI,MicroWin等等)玩好之后,可以买个开发板了,这里就不说明具体品牌了,2410/2440开发板很多的。 C.然后开始玩开发板,常用的代码编辑工具有:SourceInsight,UE。 还有代码比较工具,BeyondCompare。 当然还有ADS1.2,这个是必不可少的,可以先把ARM开发板当单片机开发板玩!先熟悉具体硬件设备的使用,如UART,SPI,LCD控制器等,最后再去玩Bootloader,系统移植,内核,文件系统,应用编程,驱动编程。 。 。
Linux下如何编译并运行C程序
1.编译单个源文件[例如]在屏幕上打印Hello,Linux.[源代码]#include#include int main(int argc,char **argv){printf(Hello,Linux.\n);exit(0);}将源文件保存为hello.c,开始进行编译 $gcc -o hello hello.c 编译成功完成后,在当前路径下,生成一个名为hello的文件,然后执行 $./hello在屏幕上,你将会看到打印结果:Hello,Linux. 说明:在默认情况下,编译成功完成后,会在当前路径下,生成一个名为的文件,然后执行$./便可打印结果,但通常可以通过选项-o来指定自己的可执行程序名称; 2.编译多个源文件 3.使用外部函数库 4.使用共享函数库和静态函数库选项详细描述
发表评论