手机版
你好,游客 登录 注册 搜索
rss订阅 手机访问 
Linux编程
Linux内核体系结构简单介绍

  1.Linux 内核简介

  现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图 1 所示。

图 1. GNU/Linux 操作系统的基本体系结构

  最上面是用户(或应用程序)空间。这是用户应用程序执行的地方。用户空间之下是内核空间,Linux 内核正是位于这里。

日期:11/26/2009 06:00:53 作者:Linux整理
Java 传值和传引用小结

在Java中,你从来没有传递对象,你传递的仅仅是对象的引用!

传值意味着当参数被传递给一个方法或者函数时,方法或者函数接收到的是原始值的副本。因此,如果方法或者函数修改了参数,受影响的只是副本,原始值保持不变。

在Java中,传递一个引用类型的参数的结果只是传递引用的副本(传值)而非引用自身。

日期:11/25/2009 08:59:23 作者:
Java之运行时异常与编译时异常区别

编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。

运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。

日期:11/25/2009 08:54:27 作者:Java编辑
Java获得CPU序列号和网卡Mac地址
/* 利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(String)接口,要用Runtime.getRuntime().exec(String[])这个接口,不然复杂命令的执行会有问题。例子如下(拿cpu个数,其他类似):
* 定义命令:
* WindowsCmd ="cmd.exe /c echo %NUMBER_OF_PROCESSORS%";//windows的特殊
* SolarisCmd = {"/bin/sh", "-c", "/usr/sbin/psrinfo | wc -l"};
* AIXCmd = {"/bin/sh", "-c", "/usr/sbin/lsdev -Cc processor | wc -l"};
* HPUXCmd = {"/bin/sh", "-c", "echo \"map\" | /usr/sbin/cstm | grep CPU | wc -l "};
* LinuxCmd = {"/bin/sh", "-c", "cat /proc/cpuinfo | grep ^process | wc -l"};
日期:11/25/2009 08:53:47 作者:Java编辑
Java提取用户电脑CPU编号和网卡编号
最近在做一个客户端监控的功能,需要提取用户电脑的CPU编号和网卡的编号,采集用户的登陆数据,据我所知道直接通过Java来调用操作系统的信息是非常困难的事情(我好像没有发现JavaAPI提供了这个功能),那这样的话只能通过JNI访问系统的信息了,不过有个SWT扩展的插件org.eclipse.swt.extension封装了调用DLL的JNI方法,主要是负责底层操作系统的方法,不过可能会对程序的跨平台性有点的影响,目前只能使用于Windows操作系统,使用方法很简单,接下来请看:
日期:11/25/2009 08:49:29 作者:Java编辑
用“动态数组ArrayList”确定JAVA数组的大小

今天做项目遇到一个这样的问题,我要把查询出来结果放在数组里,String[] array = new String[?] ,但数组的大小是不可预知的,更不能把length NEW 成常量,怎么办?其实也很简单,我们也经常用的,就是把ArrayList当作动态数组来用就可以了,DEMO:ArrayList<String> array = new ArrayList<String>();

下面是从网上检索到的具体用法:

日期:11/25/2009 08:48:07 作者:lisen8661
Linux设备驱动开发环境的搭建

对Linux设备驱动开发有了个初步的认识,下面对Linux设备驱动开发环境的搭建做个小结,以方便自己以后查询,同时也能给同道的初学者一点帮助。

刚接触Linux设备驱动时,初学者往往连如何编译驱动程序都不懂,更别说编译进内核或加载测试了。一般都是在网上找个最简单的 helloworld驱动程序,然后严格按照网上所说的步骤编译,结果却得到一大堆见都没见过的错误,更不要说根据错误信息来解决问题了,很多人到这里就 不知道如何往下进行了。十几天前我也卡在这里很长时间,现在知道所以然了就记下来,些许对一些同道者有帮助。

日期:11/24/2009 09:17:02 作者:Linux编辑
Linux下编译运行C程序超高速教程

在Linux下文本编辑器写个C程序(和Window一样,应该会吧),假设保存在了桌面上。

开个终端,由于是超高速教程,所以接下来自己看:

cd Desktop // 一些中文版的Linux可能这里是中文:桌面

gcc program.c

./a.out

如果不想生成的可执行文件名为a.out,那么可以:

日期:11/24/2009 06:53:23 作者:longlovec
Java中基本数据类型默认值

  Java中数据类型分为两种,一种是基本数据类型,另一种是对象引用类型。所以默认值也分为基本数据类型及对象引用的默认值。另外数组的默认值则是依据是基本数据类型数组还是对象引用类型数组了。

  Java中基本数据类型默认值为:

日期:11/23/2009 11:41:07 作者:Java编辑
Linux C/C++ 字符集转换,UTF-8,GB2312

在Linux上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。

一、利用iconv函数族进行编码转换

iconv函数族的头文件是iconv.h,使用前需包含之。

#include <iconv.h>

iconv函数族有三个函数,原型如下:

日期:11/23/2009 06:22:24 作者:ico编辑
Java 浏览器JEditorPane的使用

Java 浏览器JEditorPane的使用

import    java.awt.*;   
import    javax.swing.*;
import java.awt.event.*;
import    java.io.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
public class testEditPane extends JFrame{     
JEditorPane    editorPane;

日期:11/22/2009 07:59:29 作者:Java编辑
C++,那些可爱的小陷阱
此系列是为那些读过TC++PL或者具有类似水平的同学准备的,作为系列的第一篇以及有趣的热身,我们来看一个链接问题:
D1.cpp
#include <stdio.h>
struct X {
X(int);
X(int, int);
};
X::X(int = 0, int = 0) { printf("1\n"); }
日期:11/21/2009 08:57:41 作者:Linux
基于 wxWidgets 的 C/C++ IDE CodeLite 2.0 发布

对于刚刚接触编程的人来说,Vim 和 Emacs 需要一段时间的学习才能上手,一款 VS 风格的可视化 IDE 还是有必要的。在这里我要介绍的就是这样一款基于 wxWidgets 的跨平台 C/C++ IDE -- CodeLite。

个人比较喜欢 IDE 的补全,就先介绍下曾经使用过的一些 IDE 的补全:

OmniCppComplete,Vim 的补全插件,需要 Ctags,对于 Boost 这样大的库,有时一旦我按下快捷键令其补全时,会对 include/boost 文件夹进行扫描,非常慢(我的配置中没有 path 内容,有谁指点我为什么?),有些补全结果集中很多内容不符合上下文。

日期:11/20/2009 07:17:24 作者:guest
Linux内核网络栈代码的准备知识详述

1. Linux内核ipv4网络部分分层结构

BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件

主要有:/net/socket.c /net/protocols.c etc

INET socket层:BSD socket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET形式的socket时,

还需要保留些额外的参数,于是就有了struct sock结构。文件主要有:/net/ipv4/protocol.c /net/ipv4/af_inet.c /net/core/sock.c etc

日期:11/20/2009 06:42:26 作者:Linux编辑
Java常用类型定义、转换及比较
Java常用类型定义、转换及比较主要有以下三个方面:
(一)             Integer类型
1).      定义
Integer a=new Integer(int value);
Integer a=new Integer(String value);
2).      转换
                         i.              定义中就可以将int型和String型的转换为Integer型
                       ii.              String类型转换为Integer型
       Integer.valueOf("");
日期:11/19/2009 12:12:56 作者:zfg2003
JAVA编码转换的详细过程

  这些类文件中,都有可能含有中文字符串,并且我们常用前三类JAVA程序和用户直接交互,用于输出和输入字符,如:我们在JSP和Servlet中得到客户端送来的字符,这些字符也包括中文字符。无论这些JAVA类的作用如何,这些JAVA程序的生命周期都是这样的:

  *编程人员在一定的操作系统上选择一个合适的编辑软件来实现源程序代码并以.java扩展名保存在操作系统中,例如我们在中文win2k中用记事本编辑一个java源程序;

日期:11/18/2009 17:56:59 作者:JAVA编辑
彩色字符:个性化Ubuntu Linux终端

怎样在Ubuntu Linux终端中显示带有颜色的字符串呢?很简单,一些简单的命令就可以实现这点要。

是不是如图1所示的这个呢?不是,这个太简单太简单了。

先睹为快,看看下面的截图:

日期:11/17/2009 06:34:26 作者:LinuxIDC编辑
Java 文件传输UDP传输图像文件简单示例

Java 文件传输UDP传输图像文件简单示例

package transportFile;
import java.io.*;
import java.net.*;
public class Client {

日期:11/16/2009 06:10:42 作者:coolerlxl
Java小程序输入三个数求最大数

Java小程序输入三个数求最大数代码:

import java.io.*;

public class Help { // 比较两个数字
public static void main(String[] args) {
double num1 = 0;
double num2 = 0;
double num3 = 0;
double t = 0;
try {
   BufferedReader in = new BufferedReader(new InputStreamReader(
     System.in));
   System.out.println("请输入第一个数字:");

日期:11/16/2009 06:09:27 作者:Java编辑
Linux下怎样编写优美的C代码

面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可维护性,传统的 C 代码同样可以设计出比较易读,易维护,复杂度较低的优美代码,本文将通过一个实际的例子来说明这一点。

基础知识

结构体

除了提供基本数据类型外,C 语言还提供给用户自己定制数据类型的能力,那就是结构体,在 C 语言中,你可以用结构体来表示任何实体。结构体正是面向对象语言中的类的概念的雏形,比如:

日期:11/15/2009 08:18:50 作者:IBM
Java语言提供了ResourceBundle类来对properties类型的

Java语言提供了ResourceBundle类来对properties类型的资源文件加以处理。

本文对ResourceBundle类做一个解说。

开始之前,我们先解释一下什么是properties类型的资源文件。

在Java语言中,使用一种以.properties为扩展名的文本文件作为资源文件,该类型的文件的内容格式为类似:

#注释语句

日期:11/14/2009 13:11:03 作者:lifevv
Java事件响应机制

1,先自定义一个事件

public class MyEvent extends java.util.EventObject{
    public MyEvent(Object source)
    {
        super(source);
    }
}

2,再自定义一个监听器

日期:11/13/2009 09:16:26 作者:anckbx
Java 定时器退出解决方案
项目中用到了 Timer 每隔一段时间进行一些操作,现在发现有时候莫名其妙地挂在这个计时器上的操作都不做了,用“JConsole”查看其中的线程以后,发现这个定时器线程也不在了(定时器创建的时候带了名字 Timer timer = new Timer("MyTimer"),所以直接能看到),由于日志太多,之前的日志已经找不到了,所以没有办法看是否是有异常发生以及发生在哪里。初步估计,是不是由于 TimerTask 中有异常抛出,如果定时器中没有处理的话,可能就会出问题。所以看了一下 java.util.Timer 的代码:
日期:11/13/2009 09:15:34 作者:anckbx
Java定义二维数组的几种写法
Java定义二维数组的几种写法代码
  1. // 定义二维数组写法1   
  2. class numthree {   
  3.     public static void main(String[] args) {   
  4.         float[][] numthree; // 定义一个float类型的2维数组   
  5.         numthree = new float[5][5]; // 为它分配5行5列的空间大小   
  6.         numthree[0][0] = 1.1f; // 通过下标索引去访问 1行1列=1.1  
日期:11/12/2009 09:32:50 作者:Java
Vim作者创造新编程语言Zimbu

开源文本编辑器Vim的作者Bram Moolenaar推出了新的编程语言Zimbu,一种不拐弯抹角直截了当的实验性编程语言。Moolenaar表示Zimbu集现有语言的优点于一身,同时避开它们的不足。Zimbu代码清晰易读,使用范围广泛——既能写OS kernel,又能写脚本,还能写大的GUI程序,可以编译和运行在几乎所有系统上。Zimbu代码托管在Google Code上,采用Apache License 2.0许可证。

日期:11/11/2009 04:49:50 作者:solidot
Java数据库通用查询及封装

时常在网上看到,有关Java数据通用查询及封装的技术文章,前些日我在看书时突然想起以前怎么写jdbc查询的,好像当时没理顺,昨天晚上花了点时间,复习了一下写了两种通用数据封装。

文章只是为了复习而写,新手可以看看吧,大牛飘过。。。。

先把一些辅助类贴上来:

DBHelp.java获得连接及关闭资源
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

日期:11/10/2009 03:18:07 作者:javazeke
Java线程池应用

一个任务通过 execute(Runnable)方法被添加到线程池,任务就是一个 Runnable类型的对象,任务的执行方法就是 Runnable类型对象的run()方法。

当一个任务通过execute(Runnable)方法欲添加到线程池时:

如果此时线程池中的数量小于corePoolSize,即使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务。

如果此时线程池中的数量等于 corePoolSize,但是缓冲队列 workQueue未满,那么任务被放入缓冲队列。

日期:11/09/2009 00:09:50 作者:Java编辑
Eclipse开发JAVA 配置的境变量的方法

在用Eclipse开发JAVA之前,必须先配置JAVA的一些环境变量。下面是一些过程:

安装好J2SDK之后,设置环境变量:我的电脑---属性---高级---环境变量;

选择---系统变量(S):

设置JAVA_HOME环境变量:

单击---新建,在变量名中输入:JAVA_HOME

日期:11/08/2009 09:09:18 作者:569955549
Java jdbc抽象实现类实例

package com.loong.mail.crontab;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;

日期:11/07/2009 09:09:57 作者:wmqxyh
Linux 下定时器的实现方式分析

定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持,但使用场景的不同,对定时器的实现考虑也不尽相同,本文讨论了在 Linux 环境下,应用层和内核层的定时器的各种实现方法,并分析了各种实现方法的利弊以及适宜的使用环境。

概论

定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持,但使用场景的不同,对定时器的实现考虑也不尽相同,本文讨论了在 Linux 环境下,应用层和内核层的定时器的各种实现方法,并分析了各种实现方法的利弊以及适宜的使用环境。

日期:11/06/2009 08:09:16 作者:赵 军
Linux中的time

在Linux中存在两个time,一个是bash的命令,另外一个是程序/usr/bin/time,bash的time命令只能很简单的显示程序执行的时间,而/usr/bin/time程序可以显示很详细的与IO相关的数据,比如从内存中读取了多少数据,从磁盘中读取了多少数据之类的,以及文件系统的页大小。

通过type命令我们可以看到Linux中的两个time

日期:11/06/2009 05:49:15 作者:lansz
Ubuntu/Linux C编译初步
Ubuntu/Linux C编译相关初步知识。
C 编程中相关文件后缀
.a     静态库 (archive)
.c     C源代码(需要编译预处理)
.h     C源代码头文件
.i     C源代码(不需编译预处理)
.o     对象文件
.s     汇编语言代码
.so     动态库
单个源文件生成可执行程序
下面是一个简单的“hello, ubuntu”程序的源代码:
日期:11/05/2009 05:58:07 作者:Ubuntu编辑
Linux shell date用法

最近在Linux下写shell,要用到date。要用date得到当前日期,按照网上的资料,自己输入了可怎么也得不到当前的日期。经过不断的google,终于找到了答案。原因是date中的单引号错误,应该是在“Esc”按键下与“~”在一起的“·”。马上修改,问题解决了。

date的一些用法示例:

日期:11/04/2009 18:56:36 作者:Linux编辑
JAVA二进制文件读写
JAVA二进制文件读写代码
  1. /**    
  2.  * 二进制读写文件    
  3.  */     
  4. import java.io.BufferedInputStream;      
  5. import java.io.BufferedOutputStream;      
  6. import java.io.DataInputStream;      
日期:11/03/2009 16:36:51 作者:JAVA
Linux中Shell操作MySQL并导出文本文件

/usr/local/mysql-5.1.32/bin/mysql -u root -p111111 -e "use mysql;select host,user,password from user"; 

exit 0;

****************************************

如果需要导出mysql的记录到文本文件:

 /usr/local/mysql-5.1.32/bin/mysql -u root -p111111 -e "use mysql;select host,user,password from user into outfile '/home/mysql/aa.txt';"

日期:11/02/2009 08:25:59 作者:afantihome
Linux 串口编程学习
摘要:1 .打开串口  2.配置串口参数  3. 读写串口内容。
1.打开串口函数open_port()中要实现的函数:
(1)open("/dev/ttys0",O_RDWR | O_NOCTTY | O_NDELAY);/*打开串口0*/
(2)fcntl(fd,F_SETFL,0)/*恢复串口为阻塞状态*/
(3)isatty(STDIN_FILENO) /*测试是否为中断设备 非0即是中断设备*/
2.配置串口参数函数set_opt()中要实现的函数:
(1)保存原先有串口配置
tcgetattr(fd,&oldtio);
日期:11/02/2009 04:14:22 作者:erfolgreich
Ubuntu 9.10 下 QT 4.5.3 与 QtEmbeded 4.5.3 安装

网上这方面资料很多 但多是旧版本的 。我还没有发现Ubuntu 9.10 下qt 4.5.3 和qt QtEmbeded 4.5.3 安装资料
本人结合网上前辈们安装其他版本的过程,今天亲自成功安装了 QT 4.5.3 和 QtEmbeded 4.5.3 
在这里分享一下安装过程 希望能帮助到一些人。

一条件:

下载以下安装包:
1.qt-embedded-linux-opensource-src-4.5.3.tar.gz

日期:11/02/2009 04:04:31 作者:erfolgreich
Java.io 获取相对路径文件

Java.io 获取相对路径文件代码

package org.firstgame.test;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

public class PathTest {

/**
   在 E:\gamedev下执行
   java org.firstgame.test.PathTest
*/
public static void main(String[] args) throws IOException {
   //得到执行时的classpath路径 /E:/workspace/FirstGame/bin/
   URL url = Thread.currentThread().getContextClassLoader().getResource("");

日期:11/01/2009 08:41:27 作者:何庆华 Penny Hot
Linux内核定时器的实现
由于Linux还不是一个实时的操作系统,因此如果需要更高精度,或者更精确的定时的话,可能就需要打一些实时的补丁,或者用商用版的实时Linux,.

这里内的定时器最小间隔也就是1个tick.

这里还有一个要注意的,我这里的分析并没有分析内核新的hrt 定时器.这个定时器是Monta Vista加入到内核的一个高精度的定时器的实现.
日期:10/31/2009 06:14:49 作者:simohayha
JAVA需要注意的函数

1. RandomAccessFile 中有

int read() 功能:读取一个字节,返回该字节的int类型

int readInt() 功能:读取4个字节,返回其int类型

write与writeInt的区别同上

日期:10/30/2009 13:41:11 作者:JAVA
Linux下的C语言Socket函数建立TCP连接

本文介绍利用Linux下的C语言Socket函数建立TCP连接,兼容C++。

利用TCP连接,可以进行HTTP、FTP等常见协议的信息传输,是Linux网络编程的重要部分。

需要引用的头文件
进行网络编程,通常需要引用如下头文件

#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>

日期:10/29/2009 09:46:52 作者:mousewithglasses
Virtualbox运行自编译的Linux

  最近要好好学习一下Linux驱动,所以想找个运行环境,自己编译内核,然后在其上做实验,所以就想在VirtualBox上进行。

  1.首先建立个硬盘镜像:
  dd if=/dev/zero of=hd.img bs=1M count=512

  2. 为磁盘镜像分区
  首先作为一个loop device 安装
  losetup /dev/loop1 hd.img
  fdisk /dev/loop1
  对其进行分区,我是只分了一个主分区

日期:10/29/2009 09:32:59 作者:Virtualbox
在Mac中部署Java移动程序

Sun Microsystems 已经为Mac OS X发布了Java Micro Edition Software Development Kit(Java ME SDK)3.0的早期预览版。这就意味着Mac中的开发者现在也可以开发Java移动程序。早期预览版要求配置Java 1.6作为默认的运行环境。

SDK是基于最近Sun发布的NetBeans 6.8 Beta版的开发环境,支持所有的Java ME APIs,同时还支持CLDC(Connected Limited Device Configuration) Hot Spot Virtual Machine。另外,SDK允许开发者在Mac上运行 JavaFX 1.2.1 Mobile Emulator.

日期:10/28/2009 04:41:44 作者:Osss.cn
细谈Linux GCC的概念及其参数

经过长时间的学习Linux gcc,发现要理解Linux gcc也是必要的,今天小编给大家搜集了关于块设备的概念以及作用,希望大家看后会有很多收获。

1、Linux gcc包含的c/c++编译器

gcc、cc、c++、g++:

gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译

2、Linux gcc的基本用法

日期:10/27/2009 11:38:16 作者:Linux编辑
groovy编写控制台交互程序的方法

groovy很适合在服务器端写实现简单任务的脚本。参数可以通过命令一次传进去,不过重复查询时很不方便,尤其是groovy要加载JVM虚拟机,通过命令传参数给人感觉脚本很慢。

groovy可以使用jdk6中新增的java.io.Console实现控制台交互的功能,以下是一个简单的示例:

日期:10/26/2009 06:05:41 作者:Linux
创立JAVA WebService步骤

1、选择要转换的java文件,生成class
2、写wsdd
3、发布

剩下的就只有调用了wsdl2java

我原来的系统是CICS的,对后台封装了一层,现在用webservice再封装一层,前台页面,控制,数据传输,数据处理统统都可以分开了,爽
//以下是从网上找的关于AXIS的入门教程
一、Axis安装 1、环境 J2SE SDK 1.3 or 1.4: 我使用 1.4.2 Servlet Container: 我使用的Tomcat 5.0

日期:10/25/2009 11:37:13 作者:bailang3106
Ubuntu下编译和执行C程序

在Ubuntu下编译和执行C程序笔记摘抄。

首先编译C文件,进入到文件的当前目录,比如在Desktop目录,$ cd /home/wen/Desktop

然后编译C程序,$ gcc OBJECT.c -o NAME

日期:10/24/2009 06:54:02 作者:Ubuntu编辑
Linux信号量编程实例

本例示范Linux信号量的基本用法。该范例使用了两个线程分别对一个公用队列进行入队和出队操作,并用信号量进行控制,当队列空时出队操作可以被阻塞,当队列满时入队操作可以被阻塞。

主要用到的信号量函数有:

sem_init:初始化信号量sem_t,初始化的时候可以指定信号量的初始值,以及是否可以在多进程间共享。

sem_wait:一直阻塞等待直到信号量>0。

sem_timedwait:阻塞等待若干时间直到信号量>0。

sem_post:使信号量加1。

日期:10/23/2009 16:30:02 作者:dog_in_yellow
定位可动态加载的内核模块的OOPS代码行

1. 从vmlinux获取具体的代码行
文章中albcamus版主也提到了,需要有自己编译的vmlinux,而且编译���打开compile with debug info. 这个选项打开之后会使vmlinux文件比不加调试信息大一些。我这里代调试信息的是49M。建议如果学习的时候,想使用gdb的方式获取出错代码行的 话,就加上这个编译条件。

然后就可以按照具体的方法去操作,可以定位到具体的C 代码行。

日期:10/22/2009 16:31:11 作者:Godbach
Ubuntu编译程序新手指导

很多新手面临的困难和困惑都出现在编译和打包软件方面,Ubuntu的apt-get方式的确很易用,但是也屏蔽了学习的空间,对于那些希望好好学习Linux的而又感到困惑的人,通过以下三个程序的帮助,应该可以有效的减轻你的负担:

第一个,checkinstall

安装命令:sudo apt-get install checkinstall

程序功能:能跟踪由“make install”或类似命令安装的所有文件,并为这些文件创建Slackware、RPM或者Debian安装包,然后把它添加到已安装软件包数据库中,以便能简便的卸载或发布安装包。

日期:10/21/2009 10:10:23 作者:haria1988
内容分类