手机版
你好,游客 登录 注册
rss订阅 手机访问 
Linux编程
Linux下关于ARM开发笔记
记录一下以前在公司学到的一点关于ARM开发的东西,供以后参考:

1.启动和配置文件
/etc/init.d/rcS下修改启动和配置文件, /tmp目前可读可写。

2.装BSP
BSP即Board Support Package,要根据ARM芯片型号来装,如Motorola M9328MX1ADS / M9328MXLADS,安装文件一般名称为:Linux-BSP-0-3-8.tgz,装好后会生成文件系统rt.cramfs,可进行裁剪。安装好后,可用arm-linux-gcc来调试程序,和linux下gcc差不多。
日期:11/14/2007 16:47:54 作者:Linuxidc
module编译和出现insmod invalid format问题的解决方法

insmod: error inserting 'hello.ko': -1 Invalid module format
      
一些不那么神秘的信息被纪录在文件/var/log/messages中;

Jun  4 22:07:54 localhost kernel: hello: version magic '2.6.5-1.358custom 686
REGPARM 4KSTACKS gcc-3.3' should be '2.6.5-1.358 686 REGPARM 4KSTACKS gcc-3.3'

日期:11/13/2007 18:20:12 作者:hecant
RedHat9下安装gcc时可能遇到的问题及解决
相信现在还有不少人在用经典的RedHat9,毕竟他是完全免费的红帽Linux嘛!

现在介绍一下在安装gcc时可能遇到的问题。

在安装gcc时,可能会提示要求安装下面几个软件包:

binutils-2.13.90.0.18-9.i386.rpm

cpp-3.2.2-5.i386.rpm
日期:11/12/2007 08:35:33 作者:Linuxidc
Linux中删除你用不到的内核
每当Ubuntu中的Linux内核升级为新版本时,它都会将旧版本给留下来,然后你机器上的GRUB菜单就会越来越长,这样做无非是在当你使用新内核出现问题时为你提供一个保障,而大多数情况下,当你使用新内核一切正常,那些老版本的内核你也许根本就不会再用了。本文将指导你如何安全的删除那些废弃不用的旧内核。

首先你需要找出现在用的内核是什么版本。打开终端,使用下面这个命令:

uname -r
日期:11/11/2007 08:17:16 作者:Linuxidc
ubuntu7.10 下使用gcc

在刚安装完ubuntu7.10 时, 系统中的gcc并不能用来开发,还缺少常用的头文件和库文件,还需要安装build-essential这个包。

sudo apt-get install build-essential

⊗注意: 如果你的系统→系统管理→软件源,下面的CD-ROM选中的话将会出现一个错误:

日期:11/11/2007 08:15:04 作者:Linuxidc
百度Linux笔试题

1. 从a.log文件中提取包含"WARNING"或"FATAL",同时不包含"IGNOR"的行,然后提取以":"分割的第5个字段

2. 编写一个脚本,只想简单的减法运算,要求提示输入变量

3. Shell脚本阅读(解释下面执行的功能),请挑出下面程序或脚本中的错误,并说明错在哪里。

#!/bin/bash

日期:11/10/2007 16:20:28 作者:Linuxidc
Linux内核(2.6.22.6)交叉编译

    在着手编译Linux内核之前,至少应该看看源码根目录下的README文件,并参考一些其他的资料,了解编译一个内核所需要的基本条件和环境,以及基本的步骤。

    我使用的交叉编译器是arm-iwmmxt-linux-gnueabi-gcc(4.2.1),选用的内核版本是Linux-2.6.22.6。以下操作均以普通用户身份进行:

(1)make mrproper

    编译之前检查内核源码树是否“纯净”(clean),必作。

日期:11/09/2007 10:55:22 作者:Linuxidc
Linux系统日志输出级别
/proc/sys/kernel/printk文件定义了4个数字, 执行:
cat /proc/sys/kernel/printk
4 4 1 7
①控制台日志级别:优先级高于该值的消息将被打印至控制台。
②缺省的消息日志级别:将用该值来打印没有优先级的消息。
③最低的控制台日志级别:控制台日志级别可能被设置的最小值。
④缺省的控制台:控制台日志级别的缺省值。
日志缓冲区的每一行文本开头具有级别标记, 级别值越小则重要性越高. 系统定义了8个消息级别,
日期:11/08/2007 16:18:46 作者:Linuxidc
Linux下C语言编程学习之文件的操作

前言:
我们在这一节将要讨论linux下文件操作的各个函数.
1.文件的创建和读写
2.文件的各个属性
3.目录文件的操作
4.管道文件

1。文件的创建和读写
    我假设你已经知道了标准级的文件操作的各个函数(fopen,fread,fwrite等等).当然如果你不清楚的话也不要着急.我们讨论的系统级的文件操作实际上是为标准级文件操作服务的.
当我们需要打开一个文件进行读写操作的时候,我们可以使用系统调用函数open.使用完成以后我们调用另外一个close函数进行关闭操作.

日期:11/08/2007 06:40:58 作者:hoyt
Linux下安装jdk及环境变量的配置

一。下载jdk for linux ,如何下载?在哪下载?

就不用我说了吧。将下载的文件放到/home中

   1。以root身份登陆

   2。打开一个终端

   3。输入命令ls -l查看安装的文件的权限

日期:11/07/2007 15:18:02 作者:Linuxidc
编译compiz gnome: no的解决方法

解决方法很简单........

sudo apt-get remove compiz*

要先给自己的UBUNTU卸载掉compiz*相关的东西才能编译安装-_-

日期:11/06/2007 11:51:21 作者:Submitted
Compiz编译的时候碰到不是kde桌面的用户的解决方法

Compiz编译的时候碰到不是kde桌面的用户怎么办?

之前编译的时候一直没有注意过这个问题

刚看了一篇杂乱的文章发现编译的时候可以禁用kde

sudo ./configure --prefix=/usr --disable-kde

日期:11/06/2007 11:49:28 作者:Submitted
LINUX下编译ffmpeg-x264出现的错误及解决
1          版本:
X264.r663,ffmpeg.r9453
2          yasm
2.1      下载yasm新版本
要安裝x264,就需要用yasm來編譯。那就先裝個yasm吧。yasm下載網址:
       http://www.tortall.net/projects/yasm/releases/yasm-0.6.0.tar.gz
2.2      编译安装
日期:11/06/2007 09:34:03 作者:Linuxidc
Linux系统下C编译器----gcc

本节学习GNU推出的Linux系统下C编译器----gcc,主要介绍这种编译器的基本原理和使用方法,以及编译过程中所产生的错误的原因及对策。

gcc简介

Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

日期:11/06/2007 09:32:04 作者:Linuxidc
在Linux下GCC将文件合起来编译

大家用gcc懂得怎样将几个文件合来编译吗,如果不懂可以看一看,懂的请指点,

这个是老师上课的练习,目的是让我们熟悉怎样在linux的gcc下将文件合起来编译,

题目很简单的,就是输入一个浮点,然后平方输出

/*calc.c文件*/

日期:11/06/2007 08:14:09 作者:Linuxidc
Linux下支持NTFS内核模块的编译
当你安装完Linux系统,并且已经启动,恭喜你!如果你的硬盘上还安装了WinNT/2000系统,你试图去访问另一个NTFS分区时却遇到了麻烦。因为你所用的Linux系统没有已编译的支持NTFS文件系统的模块。怎么办?也许你会运行make menuconfig,重新定制你需要的所有模块,接着运行make modeules;make modeules_install来安装。这样不仅繁琐、费时,还可能会出现问题。或者因为编译内核对你有些棘手,太多的选择让你手足无措,你根本没有太好的方法。本文给你提供一个简单的方法,你可以轻松地去编译你所需要的支持NTFS系统的模块(ntfs.o)。以此为例,但愿对你编译其他模块有所帮助。
日期:11/05/2007 12:03:30 作者:Linuxidc
java非静态方法返回当前实例引用
类似这样的,刚开始打算用静态却发现不能解决多个实例的问题。后来无意中查看到一些开源框架的代码中有这样的操作,比如JSONlib中的JSONBuilder类,就可以这样操作,查看源码发现可以在方法中直接使用return this;来返回当前实例,呵呵,不错,这样一来问题就好办很多了~~
日期:11/04/2007 07:20:13 作者:Linuxidc
Linux环境下Socket编程详解
Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。
日期:11/03/2007 09:25:44 作者:Linuxidc
Linux内核编译清单详解

1. Code maturity level options

代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。

2. Loadable module support

对模块的支持。这里面有三项:

Enable loadable module support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。

Set version information on all module symbols:可以不选它。

日期:11/03/2007 09:19:49 作者:Linuxidc
在Linux系统下用java执行系统命令实例讲解

在Linux系统下用java执行系统命令例子:

要根据你的系统写一个同的脚.因为不同的系统在创建用户时交互命令不同,比如\r
<代表输入\r
>代表终端输出:

#useradd username<
linux下就行了.只要从WEB得到username,
然后调用Runtime.getRuntime().exec("useradd "+username);
就可以.

日期:11/02/2007 09:15:51 作者:Linuxidc
Linux内核发展方向深入分析

  对于一个Linux的企业用户来说,它的内核开发可能显得过于复杂了,有许多人在维护不同的代码,而且有更多志愿者在提交代码,这种乱花渐欲迷人眼式的“热闹”景象却让我们很难看清未来将有什么样的新功能。

  就其本身而言,Linux的发展没有路线图。为了对Linux发展方向有一个简单的认识,作者根据与开发者和内核维护者的交流,以及从www.kernelnewbies.org网站上了解的知识,提出了值得关注的七个开发领域。当然,这七个方面的发展也不会顺风顺水,和众多其他进入Linux内核的功能一样,会按照一条曲折的道路前进。

日期:11/01/2007 15:10:35 作者:Linux
freebsd mysql memcached进行内存缓存
先来实践下吧
ports安装memcached,libmemcache,pecl-memcache一切顺利,真是太方便了!
启动memcached不多说了,一搜一大片,看man也可以
memcached -d -m 128 -u nobody
下载 Jan's UDF  udf_memcache.c
编译
gcc -DDBUG_OFF -I/usr/local/include/ -shared -o udf_memcache.so udf_memcache.c -g -Wall -O2 -L/usr/local/lib/ -lmemcache `mysql_config --cflags`
呵呵,编译gcc的参数还记得一些
日期:10/31/2007 10:56:53 作者:gettouch
vi/vim高级命令集粹

1.交换两个字符位置

xp

2.上下两行调换

ddp

3.把文件内容反转

日期:10/31/2007 10:50:37 作者:Linuxidc
vi/vim 使用方法讲解

文档操作
vi/vim 基本使用方法
本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

日期:10/31/2007 10:45:44 作者:Linuxidc
C++编程初学者请看
  1.把C++当成一门新的语言学习(和C没啥关系!真的。);
  2.看《Thinking In C++》,不要看《C++变成死相》;
  3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
  4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
  5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
日期:10/30/2007 15:16:11 作者:Linuxidc
Red Hat9.0 Linux系统下搭建Java开发环境

大家可能有时需要在Linux系统下进行java开发,事实上很多公司作项目都在用Linux,这篇文章讲述如何在Red Hat9.0系统上搭建java开发环境。最终使用Eclipse3.0。

最近IBM发布了Eclipse3。0正式版本,我们就在Linux下安装他并开发Java应用吧。

日期:10/29/2007 07:06:10 作者:Linuxidc
Fedora下手动编译升级到Kernel2.6.23

  闲着没事,发现Kernel已出2.6.23,或者这个版本已经出来了一段时间了,只是我没有注意到吧。但是Fedora的源上还没有相应的rpm包出来,所以我就下载了一个,手动编译安装了。下面简单介绍一下整个过程。

  第一步:下载源码:
  这个没有什么好说的。kernel.org,进去找一个比较好用的镜像,下载最新的源码。注意为了稳定起见,最好不要下载测试版本的。

日期:10/28/2007 08:34:53 作者:Linuxidc
Ubuntu 7.10新内核-Kernel 2.6.22-11使用感受

至少我用着是下面这样的.

第一,得把Gutsy的源加一行到你的源里,执行以下命令(假如你也用cn99作为资源来源):

日期:10/27/2007 06:10:27 作者:Linuxdc
从汇编看Linux系统
  加了三天工作时间,想解决本子上的Linux跑不起来,现在还没有搞定,但至少知道,Linux中的main.c已经执行到了最后的rets_init(),应该在串口上打出的版本号等信息,却没有显示。

  完成了一件以前从没想到过的事情,把BootLoader(Redboot)->Linux kernel的start_kernel()函数的汇编完全的跟了一遍,从出生到现在,从没有看过,跟踪过,理解过这么多的汇编代码。关键的寄存器值,关键的内存地址,关键的跳转,很有收获,把Linux的启动过程全面深入的理解了,真是实践出真知。
日期:10/26/2007 09:03:50 作者:Linuxidc
Linux中load average意思
uptime 11:12:26 up 3:44, 4 users, load average: 0.38, 0.31, 0.19

上面的输出,load average后面分别是1分钟、5分钟、15分钟的负载情况。

数据是每隔5秒钟检查一次活跃的进程数,然后根据这个数值算出来的。如果这个数除以CPU的数目,结果高于5的时候就表明系统在超负荷运转了。其算法如下:

文件: include/linux/sched.h:
日期:10/25/2007 12:35:18 作者:Linuxidc
编译Compiz fusion 0.6.0时configure: error: C compiler cannot create executables的解决

在编译Compiz fusion 0.6.0的时候

碰到configure: error: C compiler cannot create executables这个问题 只要安装基础包就可

日期:10/25/2007 06:32:44 作者:Linuxidc
编译fusion 0.6.0提示error: Can't find X libraries.的解决

我在编译fusion 0.6.0的时候遇到了下面这个问题

error: Can't find X libraries. Please check your installation and add the correct paths!

日期:10/25/2007 06:27:23 作者:Linuxidc
ubuntu下Jdk1.6的安装及配置
ubuntu自带了jdk1.4的开发包,最近学习JAVA,需要接触许多1.5和1.6里才有的新类,如Scanner类,不得不下载并且配置j2sdk1.6,论坛上的方法比较多,在这里自己总结一下安装和配置的经验:

首先使用 sudo apt-get install sun-java-jdk6 下载开发包

下载下来的默认路径是/usr/lib/jvm/java-6-sun

接下来要配置系统了
日期:10/24/2007 20:23:09 作者:Linuxidc
LINUX下用C语言实现遍历文件夹
学习了LINUX下用C语言实现遍历文件夹,一些心得

struct dirent中的几个成员:

d_type:4表示为目录,8表示为文件

d_reclen:16表示子目录或文件,24表示非子目录

d_name:目录或文件的名称
日期:10/23/2007 11:10:48 作者:Linuxidc
linux程序设计文件目录操作学习小结
linux程序设计文件目录中比较重要的设备文件有三个,它们是/dev/console,/dev/tty和/dev/null

1,/dev/console设备:系统控制台,出错和诊断信息通常会被发送到这个设备。
2,/dev/tty设备:进程控制终端的一个假名。
3,/dev/null:空设备,所以写向这个设备的输出都将被丢弃。而读这个设备会立刻返回一个文件尾标志。

常用访问文件的函数:
日期:10/22/2007 13:46:08 作者:Linuxidc
ubuntu7.10下编译使用新内核笔记
!这里 rev 和 append-to-version 的参数要和原来的一样。
这样可以节省很多重新编译的时间。

b. 新的内核的第一次运行时,图形界面有可能不能正常工作,只需进入
root 帐户,执行 depmod ,然后再 /etc/init.d/gdm restart 。

执行完上面的步骤后,在我的系统里面还是不能进入图形界面, 发现是模块没正确加载。
insmod /lib/modules/2.6.23.1-core2/nvidia/nvidia.ko
然后在运行/etc/init.d/gdm restart就进入图形界面并可以开3D桌面。
日期:10/21/2007 09:01:31 作者:Linuxidc
数据库在C++程序下使用教程讲解

  在本教程中,我假设大家都知道如何使用C++的类进行工作,因为我所有的数据结构,要立足于他们。我遇到过关于数据结构的教程,但是很难找到一个使用OOP来编写的。因此,这其中将主要集中于用一个类来编写数据结构。

  栈

  在编写代码时,堆栈是最常用的数据结构。它的概念简单,编写也比较简单。有这么一个情况,桌子上有堆成一堆的5本书,你想增加一本。应该怎么做?只要把书放在顶端就可以了。如果你想从这堆书中取出第3本呢?你只要一本接着一本把书移到顶端,直到第3本书处在顶端。然后取走第3本书,并使其他处在顶端。

日期:10/20/2007 12:56:57 作者:Linuxidc
Linux驱动程序设计全文详解
日期:10/19/2007 20:05:35 作者:Linuxidc
UBUNTU Linux环境下用MONO执行C#程序
公共语言运行库提供了跨平台的能力。.NET程序可以在任何安装了CLR的系统上运行。实际上,Mono的C#编译器是在Windows平台上用 Microsoft .NET Framework SDK编译后再移到Linux平台上的。你可以把在Windows平台上编译好的程序转到Linux上并运行它。

Mono还没有完全实现.NET Framework,但已经足够让你运行你想写的程序了。开源的东西一般进化速度很快,也许很快就能完全满足你的需求。

顺便提一下,在gtk-sharp.sourceforge.net上有个Gtk# 项目,它致力于给C#语言绑定gtk+ toolkit。它同时也致力于在Mono下提供和Windows.Forms兼容的库。当然,从Windows迁移到Linux毕竟是有困难的,让我们 关注它的进展吧。
日期:10/18/2007 14:24:17 作者:Linuxidc
Linux驱动程序基础知识学习
  Linux通过设备驱动程序为应用程序提供了统一抽象的接口,从而隐藏了大量不同设备之间的区别和细节,在Linux中对硬件设备的操作和通常的文件一样,利用标准的文件操作可以对设备上进行打开、关闭、读取或者写入操作。系统中的每个设备由“设备特殊文件”来代表。例如,/dev/hda代表系统中的第一个IDE硬盘,每个由相同的设备驱动程序控制的设备具有相同的主设备号,而次设备号则用来区分同类设备中的不同设备,设备特殊文件的虚拟文件系统(Virtual File System,简称VFS)索引节点中包含设备号信息,如果通过系统调用访问设备,则内核通过该VFS索引节点汇总的设备号信息调用适当的设备驱动程序。
日期:10/17/2007 09:01:36 作者:Linuxidc
linux嵌入式系统学习
  最近一直在看嵌入式系统方面的教程,包括arm和linux方面的知识,虽然看了不少,但除了linux外别的方面都还没有实践过,不过大体上流程还是能下来的,最近看书看的有点烦了,于是就把最近学习的笔记和心得写出来,下一步就是买一块arm9开发板进行学习。

  我认为嵌入式系统的定义应当是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。比如现在ATM取款机就是一个典型RTOS,embedded os主要包括两部分,一部分是处理器,比如ARM,POWERPC,MIPC,一部分是OS,比如
日期:10/16/2007 15:01:39 作者:Linuxidc
CentOS 4.5环境下编译2.6.22.9内核
机器配置:865主板、集成显卡、声卡,256的内存,8139网卡
原始系统:CentOS 4.5最小化安装(2.6.9内核)

编译之前的准备:
1、安装GCC(我最小化安装的时候,没装),通过yum来装的,很方便;

2、安装ncurses-devel包,没装这个的话,make menuconfig的时候报错,就只能用make config了(相当郁闷的,只能选择一次,错了就不能改,得重新来一遍);yum install ncurses-devel就可以。
日期:10/15/2007 13:25:57 作者:Linuxidc
linux内核配置选项及删改全过程

能够完成系统的基本功能,上网,收发邮件等,支持xwindows图形界面。

在menuconfig中配置:

详细介绍内核配置选项及删改情况

第一部分:全部删除

Code maturity level options ---> 代码成熟等级选项

日期:10/15/2007 07:47:38 作者:Linuxidc
Linux下一个练习c源代码(毫秒级计时)
Linux下一个练习c源代码(毫秒级计时)
日期:10/14/2007 11:07:32 作者:Linuxidc
linux下编译c++笔记
一、如果使用不同的用户的登录linux,在对同一个工程进行编译时,可能会出现不能编译的问题。这是由于不同用户的权限不一样造成的,比如你使用root用户编译工程,然后退出来使用普通用户再对该工程进行编译的时候就会因为权限的问题造成编译失败,因此建议对一个工程进行编译修改的过程中始终使用同一个用户就不会出现上面的问题了。
日期:10/13/2007 21:20:59 作者:Linuxidc
Linux内核驱动开发笔试题及答案

一、一些常规中举的C考题

第一题:写出下述程序结果:

int m[][3] = {1,4,7,2,5,8,3,6,9};

int i, j, k = 2;

for (i = 0; i < 3; i++) {

printf(“%d”, m[k][i]);

}

日期:10/12/2007 17:07:48 作者:Linuxidc
在Linux下学会编写服务程序
在linux下学会编写服务程序,  因为有些程序需要从windows迁移linux下,而我又对Linux不太熟悉,所以请教了网友,下面简略讲了一下如何在linux下编写服务程序。
了解了一些之后就当然就是开始下笔了:
首先编写了一个用作服务的程序,功能很简单,每隔1秒钟把当前时间写入一个文件中:
void recordTime()
{
const char pa[256] = "//home//projects//testService//recordTime";
ofstream fout;
日期:10/12/2007 08:37:53 作者:Linuxidc
Linux下的C语言开发要学习什么内容
  一、工具的使用
  1、学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。

  2、学会makefile文件的编写规则,并结合使用工具aclocal、autoconf和automake生成makefile文件。
日期:10/11/2007 06:37:27 作者:Linuxidc
我是Linux编程初学者
原来我的linux编程基础这么不好,gcc选项就只会几个,makefile只能看个一知半解,以前在windows下编程有vc6.0的ide,很多底层的东西(编译阿,链接阿)都不用去理,到了linux了,也赶着下了个ide(netbeans的c++ plus),也不用理那些makefile等等,于是也养成了懒惰的习惯,觉得编程好了,就可以了,但事实并非这样!
日期:10/10/2007 13:05:19 作者:Linuxidc
linux内核阅读器的建立
linux内核阅读器的建立,

首先下载和使用lxr和glimpse

1,

#tar -zxvf glimpse-latest.tar.gz

#cd glimpse-4.18.5

#apt-get install flex

在glimpse的编辑过程需要使用到flex

日期:10/09/2007 11:50:18 作者:Linuxidc
内容分类