跳至主要内容

【转】Installing Qt/Embedded

This installation procedure is written for Linux. It may need to be modified for other platforms.

  1. Unpack the archive if you have not done so already

        cd ;     gunzip qt-embedded-VERSION-commercial.tar.gz    # uncompress the archive     tar xf qt-embedded-VERSION-commercial.tar       # unpack it 
    Replace VERSION with the Qt/Embedded version number throughout.

    This document assumes that the archive is installed as ~/qt-VERSION.

  2. Compile the Qt/Embedded library and examples.

        cd ~/qt-VERSION     export QTDIR=~/qt-VERSION     ./configure     make 

    The configuration system is designed to allow platform-specific options to be added, but in general all Linux system which have framebuffer support can use the "linux-generic-g++" platform. The configuration system also supports cross-compilers: to build on Linux/x86 for the Linux/MIPSEL target, you would use:

         ./configure -platform linux-x86-g++ -xplatform linux-mips-g++ 

    Only a small number of configurations are predefined, all much the same. Configurations files are found in configs/.

  3. Enable framebuffer support.

    You may need to recompile your kernel to enable the framebuffer. This document does not describe how to do this; the HOWTO-Framebuffer page contains a short description. (You should see a penguin logo at boot time when the frame buffer is enabled.)

    For Matrox G100/G200/G400 use the matrox frame buffer driver.

    For NVidia TNT cards use the nvidia frame buffer driver.

    For Mach64 and most other cards, use the vesafb driver.

    Note that some cards are only supported in VGA16 mode, this will not work with the current version of Qt/Embedded, since VGA/16 is not yet supported. You may need to upgrade your kernel, or even switch to an experimental kernel.

    The frame buffer must also be enabled with a boot parameter. See /usr/src/linux/Documentation/fb for details.

    The fbset program, which should be included in Linux distributions, may be used to switch video modes without rebooting the system. The video mode active when the server is started will be used. (8-bit modes are still experimental.) Note: fbset does not work with the vesafb driver.

  4. Change permissions.

    To run Qt/Embedded, you need write access to the framebuffer device /dev/fb0.

    You also need read access to the mouse device. (Note that /dev/mouse is normally a symbolic link; the actual mouse device must be readable.)

  5. How to run the demonstration program.

    Log into a virtual console and do:

        cd ~/qt-VERSION/     ./start-demo 

  6. Miscellaneous troubleshooting and known bugs.

    To kill gpm, run the following command as root:

        gpm -k 

    In some cases, if the server does not work, it will work when run as root.

    Some example programs may not compile with GCC 2.95.

    Show processes using the framebuffer:

        fuser -v /dev/fb0 

    Kill such processes:

        fuser -vk /dev/fb0 
    or harsher:
        fuser -k -KILL /dev/fb0 

    Show existing semaphores:

        ipcs             

    Remove semaphores:

        ipcrm 

    The communication between client and server is done through the named pipe /tmp/.QtEmbedded; sometimes it may need to be deleted (eg. if you run Qt/Embedded as root then later as an unprivileged user).

  7. Customization.

    The Qt/Embedded library can be reduced in size by removing unnecessary features.

评论

此博客中的热门博文

【转】smb协议栈使用示例

/*  * * uncdownload.c  * *  * * Utility for downloading files from SMB shares using libsmbclient  * *  * * Copyright(C) 2006 Sophos Plc, Oxford, England.  * *  * * This program is free software; you can redistribute it and/or modify it under the terms of the  * * GNU General Public License Version 2 as published by the Free Software Foundation.  * *  * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without  * * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  * * See the GNU General Public License for more details.  * *  * * You should have received a copy of the GNU General Public License along with this program; if not,  * * write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  * *  * */ # include < sys / types . h > # include < sys / time . h > # include ...

【转】Ether Types

Ether Types (last updated 2008-09-09) NOTE: Please see [RFC5342] for current information and registration procedures. This registry will be revised soon and will be replaced with up-to-date information. Many of the networks of all classes are Ethernets (10Mb) or Experimental Ethernets (3Mb). These systems use a message "type" field in much the same way the ARPANET uses the "link" field. If you need an Ether Type, contact: IEEE Registration Authority IEEE Standards Department 445 Hoes Lane Piscataway, NJ 08854 Phone +1 732 562 3813 Fax: +1 732 562 1571 Email: <ieee-registration-authority& ieee.org > http://standards.ieee.org/regauth/index.html The following list of EtherTypes is contributed unverified information from various sources. Another list of EtherTypes is maintained by Michael A. Patton and is accessible at: <URL: http://www.cavebear.com/CaveBear/Ethernet/ > <URL: ftp://ftp.cavebear.com/pub/Ethernet-codes > Assign...

【转】udp编程实例

UDP通讯实例 2008-04-29 15:30:05 / 个人分类: linux C编程 UDP协议的几点好处: 1.UDP不要求保持一个连接; 2.UDP没有因接收方认可收到数据包(或者当数据包没有正确抵达而自动重传)而带来的开销; 3.设计UDP的目的是用于短应用和控制信息; 4.在一个数据包接一个数据包的基础上,UDP要求的 网络 带宽比TCP更小。 UDP的几个缺点: 1.程序员必须创建代码检测传输错误并进行重传(如果应用程序要求这样做); 2.程序员必须把大数据包分片。 code: <1> /* * sender.c--UDP protocol example */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> int port = 6789; int main() {     int socket_descrīptor;     int iter = 0;     char buf[80];     struct sockaddr_in address;     /* Initialize socket address structure for Interner Protocols */     bzero(&address, sizeof(address)); // empty data structure     address.sin_family = AF_INET;     address.sin_addr.s_addr = inet_addr("127.0.0.1");     address...