Archive

Posts Tagged ‘Linux’

simple logging in C programming

March 18th, 2009 BianJiang No comments
近来在调试C的时候,经常要打印些调试信息,如果都统一使用printf来调试,有些太累了, 如果调试完成还要去掉, 就写了个简单的宏来进行定义, 主要的代码如下:
[code lang="c"]
#include

#undef PDEBUG             /* undef it, just in case */
#ifdef SCULL_DEBUG
#   define PDEBUG(fmt, args…) printf(”[%s-%s:%d]-[Debug] ” fmt “\n”, __FILE__, __func__, __LINE__, ## args)
#else
#   define PDEBUG(fmt, args…) /* not debugging: nothing */
#endif

int main(void)
{
char * val = “wifihack.net”;
PDEBUG(”Hello, %s”, val);
return 0;
}
[/code]

为了减少修改头文件,我们可以通过Makefile来控制Debug信息的输出:

[code lang="c"]
# Comment/uncomment the following line to disable/enable debugging
DEBUG = y

# Add your debugging flag (or not) to CFLAGS
ifeq ($(DEBUG),y)
DEBFLAGS = -O -g -DSCULL_DEBUG # “-O” is needed to expand inlines
else
DEBFLAGS = -O2
endif

CFLAGS += $(DEBFLAGS)

ALL:
gcc $(CFLAGS) -o hello hello.c
[/code]

参考: http://www.makelinux.net/ldd3/chp-4-sect-2.shtml


Bian Jiang

Categories: Tech.Notes Tags: , , ,

禁用linux终端中的报警声

September 28th, 2008 BianJiang No comments

方法一 去掉PC喇叭的驱动模块

#rmmod pcspkr 已测试

可以将命令写到 /etc/rc.local 这样下次系统启动的时候就会去掉pcspkr模块了。

整个世界都清静了!

方法二 修改 /etc/inputrc 文档

将 set bell-style none 命令行激活,重启系统。

方法三 setterm -blength 0

Jiang Bian 2008.9.28

–EOF–

Categories: Tech.Notes Tags: ,

Sub-Process /usr/bin/dpkg returned an error code (1)

August 19th, 2008 BianJiang 2 comments

一、 发现deb包依赖关系错误:

border@b0rder:~$  sudo apt-get install -f
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
读取状态信息... 完成
已经不需要下列自动安装的软件包:
  liberror-perl libdigest-sha1-perl
使用 'apt-get autoremove' 来删除它们。
共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件未被升级。
有 6 个软件包没有被完全安装或卸载。
操作完成后,会消耗掉 0B 的额外磁盘空间。
正在设置 flex (2.5.34-2.1) ...
install-info:不能识别的选项“--description=A fast scanner generator”
        试用“install-info --help”以获得选项的完整列表。
dpkg:处理 flex (--configure)时出错:
 子进程 post-installation script 返回了错误号 1
正在设置 cvs (1:1.12.13-9) ...
install-info: 没有指定目录文件;试用 --help 以获得更多信息。
dpkg:处理 cvs (--configure)时出错:
 子进程 post-installation script 返回了错误号 1
正在设置 libidn11-dev (1.1-1) ...
install-info: 没有指定目录文件;试用 --help 以获得更多信息。
dpkg:处理 libidn11-dev (--configure)时出错:
 子进程 post-installation script 返回了错误号 1
正在设置 comerr-dev (2.1-1.40.8-2ubuntu2) ...
install-info: 没有指定目录文件;试用 --help 以获得更多信息。
dpkg:处理 comerr-dev (--configure)时出错:
 子进程 post-installation script 返回了错误号 1
dpkg:依赖关系问题使得 libkrb5-dev 的配置工作不能继续:
 libkrb5-dev 依赖于 comerr-dev;然而:
  软件包 comerr-dev 还没有被配置。
dpkg:处理 libkrb5-dev (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg:依赖关系问题使得 libcurl4-gnutls-dev 的配置工作不能继续:
 libcurl4-gnutls-dev 依赖于 libidn11-dev;然而:
  软件包 libidn11-dev 还没有被配置。
 libcurl4-gnutls-dev 依赖于 libkrb5-dev | hurd;然而:
  软件包 libkrb5-dev 还没有被配置。
  未曾安装软件包“hurd”。
dpkg:处理 libcurl4-gnutls-dev (--configure)时出错:
 依赖关系问题 - 仍未被配置
在处理时有错误发生:
 flex
 cvs
 libidn11-dev
 comerr-dev
 libkrb5-dev
 libcurl4-gnutls-dev
E: Sub-process /usr/bin/dpkg returned an error code (1)

二、 删除已经安装错误包的文件:

通过dpkg -L 来查看已经安装的文件, 已flex为例:

border@b0rder:~$ dpkg -L flex
/.
/usr
/usr/bin
/usr/bin/flex
/usr/lib
/usr/lib/libfl.a
/usr/lib/libfl_pic.a
/usr/lib/libfl.so
/usr/share
/usr/share/info
/usr/share/info/flex.info-2.gz
/usr/share/info/flex.info.gz
/usr/share/info/flex.info-1.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/flex.1.gz
/usr/share/doc
/usr/share/doc/flex
/usr/share/doc/flex/NEWS.Debian.gz
/usr/share/doc/flex/NEWS.gz
/usr/share/doc/flex/changelog.Debian.gz
/usr/share/doc/flex/copyright
/usr/share/doc/flex/README.gz
/usr/share/doc/flex/README.Debian.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/flex
/usr/include
/usr/include/FlexLexer.h
/usr/bin/flex++
/usr/bin/lex
/usr/lib/libl.a
/usr/share/man/man1/lex.1.gz
/usr/share/man/man1/flex++.1.gz
/usr/share/doc/flex/changelog.gz

把要删除的文件导入文件中,做成删除脚步:

border@b0rder:~$ dpkg -L flex > flex
 通过vim 在每一行前加 "rm "
border@b0rder:~$ chmod a+x flex
border@b0rder:~$ sudo ./flex

三、 删除dpkg info 信息:

border@b0rder:~$ cd /var/lib/dpkg/info
border@b0rder:/var/lib/dpkg/info$ sudo rm flex.*

四、 卸载flex:

border@b0rder:/var/lib/dpkg/info$ sudo apt-get remove flex

五、再执行 sudo apt-get install -f,flex依赖问题解决。其他的一览关系参考二,三,四 步。

六、参考

– EOF –

Categories: Tech.Notes Tags: , , ,

VIA P4M890 install openchrome

July 23rd, 2008 BianJiang No comments

把系统升级到ubuntu 8.04 后分辨率变为800*600, Google找到开源的OpenChrome驱动支持P4M890, 就自己手动编译:

border@b0rder:~$ wget http://openchrome.org/releases/xf86-video-openchrome-0.2.902.tar.gz
border@b0rder:~$ tar xvzf xf86-video-openchrome-0.2.902.tar.gz
sudo apt-get build-dep xserver-xorg-driver-via   或者安装 sudo apt-get build-dep  xserver-xorg-video-openchrome
cd xf86-video-openchrome-0.2.902/
./configure --prefix=/usr
make
sudo make install
border@b0rder:~$ sudo displayconfig-gtk
通过displayconfig-gtk 选择openchrome驱动重新启动系统就可以

硬件信息:

border@b0rder:~/tools$ lspci
00:00.0 Host bridge: VIA Technologies, Inc. P4M890 Host Bridge
00:00.1 Host bridge: VIA Technologies, Inc. P4M890 Host Bridge
00:00.2 Host bridge: VIA Technologies, Inc. P4M890 Host Bridge
00:00.3 Host bridge: VIA Technologies, Inc. P4M890 Host Bridge
00:00.4 Host bridge: VIA Technologies, Inc. P4M890 Host Bridge
00:00.5 PIC: VIA Technologies, Inc. P4M890 I/O APIC Interrupt Controller
00:00.6 Host bridge: VIA Technologies, Inc. P4M890 Security Device
00:00.7 Host bridge: VIA Technologies, Inc. P4M890 Host Bridge
00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI Bridge
00:02.0 PCI bridge: VIA Technologies, Inc. P4M890 PCI to PCI Bridge Controller
00:03.0 PCI bridge: VIA Technologies, Inc. P4M890 PCI to PCI Bridge Controller
00:0f.0 IDE interface: VIA Technologies, Inc. VT8237A SATA 2-Port Controller (rev 80)
00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 07)
00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev a0)
00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev a0)
00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev a0)
00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev a0)
00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 86)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8237A PCI to ISA Bridge
00:11.7 Host bridge: VIA Technologies, Inc. VT8251 Ultra VLINK Controller
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 7c)
00:13.0 PCI bridge: VIA Technologies, Inc. VT8237A Host Bridge
01:00.0 VGA compatible controller: VIA Technologies, Inc. UniChrome Pro IGP [VIA P4M890 Chipset] (rev 01)
04:01.0 Audio device: VIA Technologies, Inc. VIA High Definition Audio Controller (rev 10)
参考资料:

–EOF–

Categories: OpenSource Tags: , , , , ,

在linux中格式化一个新硬盘并加载分区

July 14th, 2008 BianJiang No comments

确定你要格式化的硬盘,我的两块硬盘都是SCSI接口的,可以通过:

border@ubuntu:/dev$ ls sd*
sda  sda1  sda2  sda5  sda6  sda7  sdb  sdb1

如果是USB设备:

cd /dev
ls hd*

IDE设备是:

cd /dev
ls hd*

查看分区信息:

border@ubuntu:~$ sudo fdisk -l
[sudo] password for border:

Disk /dev/sda: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x980c980c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         383     3076416    b  W95 FAT32
/dev/sda2             384       17849   140295645    f  W95 Ext'd (LBA)
/dev/sda5             384        2933    20482843+   c  W95 FAT32 (LBA)
/dev/sda6            2934       17756   119065716   83  Linux
/dev/sda7           17757       17849      746991   82  Linux swap / Solaris

Disk /dev/sdb: 36.7 GB, 36703918080 bytes
255 heads, 63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xa3535cb2

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        4462    35840983+   7  HPFS/NTFS

确定要格式化的分区为sdb1.

开始格式化:

border@ubuntu:/dev$ sudo fdisk /dev/sdb

The number of cylinders for this disk is set to 4462.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): m  (帮助信息)
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition   (删除分区)
   l   list known partition types
   m   print this menu
   n   add a new partition  (创建新分区)
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id   (转换分区类型)
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

删除旧分区d (delete a partition):

Command (m for help): d
Selected partition 1

创建新分区 n (add a new partition):

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4462, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-4462, default 4462):
Using default value 4462

转换分区类型 t (change a partition’s system id):

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): l

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX
Hex code (type L to list codes): 83       (83 为 Linux ext3 格式)
You cannot change a partition into an extended one or vice versa
Delete it first.

保存退出 w (write table to disk and exit):

Command (m for help): w

创建文件系统:

border@ubuntu:~$ sudo mkfs.ext3 /dev/sdb1

单独挂载分区:
如果要挂载到/svn到话,你要先把现在/svn的文件全部(包括隐藏文件)转移到分割好到分区,再编辑/etc/fstab:

/dev/sdb1   /svn ext3 relatime 0 2

最后重启电脑,重启后查看格式和后的分区信息:

border@ubuntu:/bvcomsvn$ sudo fdisk -l

Disk /dev/sda: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x980c980c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         383     3076416    b  W95 FAT32
/dev/sda2             384       17849   140295645    f  W95 Ext'd (LBA)
/dev/sda5             384        2933    20482843+   c  W95 FAT32 (LBA)
/dev/sda6            2934       17756   119065716   83  Linux
/dev/sda7           17757       17849      746991   82  Linux swap / Solaris

Disk /dev/sdb: 36.7 GB, 36703918080 bytes
255 heads, 63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xa3535cb2

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        4462    35840983+  83  Linux

sdb1 由原来的 HPFS/NTFS 变为现在的 Linux。

–EOF–

Categories: Tech.Notes Tags: