VM虚拟机中使用Linux(Fedora 1)
3第1章
Linux安装
3第2章
VM Tools安装
4第3章
Linux网络配置
4第4章
ARM Linux工具链安装
4第5章
Linux下minicom使用
5第6章
tftp安装与配置
6第7章
nfs配置
7第8章
DHCP安装
8第9章
u-boot 1.1.6编译
8第10章
ARM Linux 2.6.20 内核编译
9第11章
ARM u-boot烧写
9第12章
Windows下的Ramdisk Linux编译与烧写
11第13章
Windows下的nfs Linux编译与烧写
12第14章
写第一个Linux程序
12第15章
写第一个嵌入式Linux程序
13第16章
Vi命令
15第17章
GCC和GDB命令
18第18章
MAC为全0的解决办法
18第19章
Linux FTP服务器搭建
19第20章
文件解压缩
19第21章
Ramdisk增加文件
19第22章
多级
目录
工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录
源码Makefile示例
21第23章
PC驱动程序编程
22第24章
ARM驱动程序编程
22第25章
LCD显示不正常
23第26章
Framebuffer编程
24第27章
QT/Embedded安装
25第28章
QPE编译
26第29章
QT编程(V3.1在PC上运行)
27第30章
QT编程(V2.3.X 在PC上运行)
27第31章
QT编程(V2.3.X 在qvfb上运行)
27第32章
QT编程(V2.3.X 在arm上运行)
28第33章
QT编程用designer(在pc上运行)
28第34章
QT编程用designer(在qvfb上运行)
29第35章
QT编程用designer(在arm上运行)
30第36章
QT翻译
30第37章
QT中文支持
30第38章
Qt-3.1.2工作
31第39章
Lcd驱动编写
31第40章
Linux2.6.24内核编译
31第41章
arm-linux-gdb安装
32第42章
U-boot 移植修改
32第43章
QTE中修改LCD显示颜色
32第44章
fcitx-3.4.2安装
第1章 Linux安装
1、 在VM启动画面下按F2,进入Boot,选择光盘启动;
2、 在VM的Setting里选择光驱,并将其指向Linux的ISO;
3、 顺序安装完毕即可。
4、 安装Linux后如果进不了X Server,进入Linux所在目录中,打开Red Hat Linux.vmx文件,将其中的svga.vramSize修改成
svga.vramSize = "8388608"(8388608=4*1024*768)
即可。完了在命令行下执行:
vi /etc/X11/XF86Config
修改其中的:
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "800x600" "640x480"
EndSubSection
即可完成。
5、 安装Linux后如果进不了X Server,同时不停的闪动,并出现could not open default font 'fixed'这样的错误信息,是因为系统中的/tmp文件夹被删掉的原因,可以使用以下传令进行启动X Server:
1. 在登陆后提示符下输入 xfs &
2. 运行 chown /tmp/.font-unix
3. 运行 chown /tmp/.font-unix/fs7100
4. 运行 chgrp /tmp/.font-unix
5. 运行 chgrp /tmp/.font-unix/fs7100
6. 运行startx
第2章 VM Tools安装
1、 启动Linux;
2、 在VM的Setting里选择Install VMware Tools;
3、 在Linux控制台中执行以下命令
Mount /dev/cdrom
Mkdir /arm
cp /mnt/cdrom/ VMwareTools-6.0.4-93057.tar.gz /arm/ VMwareTools-6.0.4-93057.tar.gz
umount /dev/cdrom
cd /arm
ls
tar zxf VMwareTools-6.0.4-93057.tar.gz
ls
cd vmware-tools-distrib
ls
./vmware-install.pl(注意前面的点)
然后一路点确定,除了编译器版本不同。
4、 在Setting./option里选择共享文件夹;
第3章 Linux网络配置
1、 在Setting/Ethernet里选择Bridge;
2、 配置VMware Network Adapter VMnet8为与主机同网段的IP;
3、 将Linux的网络配置与VMware Network Adapter VMnet8完全一致地(包括IP,网关和DNS)即可上网。
4、 防火墙要设置69端口为例外,否则可能会在使用nfs时出现以下错误:
Root-NFS: Unable to get nfsd port number from server, using default
网络不能联通
第4章 用WINARM编译bootstrap
一、下载安装WinARM编译工具(winarm.rar文件)
1、解压缩winarm.rar
2、将解压后的winarm目录拷贝到C盘
3、向windows中path变量中添加 C:\WinARM\bin 和 C:\WinARM\utils\bin 目录,以半角分号(;)隔开
path变量添加说明:
(1)右击:我的电脑->属性
(2)出现对话框后,点击高级,点击面板上的“环境变量”
(3)双击path变量,在后面添加上两个目录,如果安装在C盘,则是:C:\WinARM\bin 和 C:\WinARM\utils\bin
二、准备at91sam9260的bootstrap程序(文件夹bootloader中)
将\Bootstrap文件夹放在C:目录下。
三、编译bootstrap程序
点击开始->运行->输入cmd,进入DOS命令行窗口。
cd C:\Bootstrap\board\at91sam9263ek\dataflash>
make
dataflash_at91sam9263ek.bin为可下载文件
编译dataflash中的bootstrap,进入dataflash目录,输入make生成可执行代码。然后通过SAM-BA软件将bin文件下载到dataflash中。接着就可以下载用户代码至dataflash的0x8000处,bootstrap可以将用户代码拷贝到外部SDRAM中运行。
>C:
>cd bootstrap\board\at91sam9263ek\dataflash
>make
第5章 ARM Linux工具链安装
1、 在VM的Setting/光驱里选择arm-2007-01-21.iso;
2、 在Linux控制台中执行以下命令:
mount /dev/cdrom
cd /mnt/cdrom
./install -d /opt/arm(注意前面红点)
结束后执行:
vim /etc/profile
在if和fi中的最后一行添加:
pathmunge /opt/arm/usr/bin
重启系统
第6章 Linux下minicom使用
1、 在命令行中执行:
minicom –s
进行minicom设置;
2、 选中Serial port setup进行设置;
3、 选择相应的字母进行设置,按Enter退出当前项设置:
| A - Serial Device : /dev/ttyS0 │
│ B - Lockfile Location : /var/lock │
│ C - Callin Program : │
│ D - Callout Program : │
│ E - Bps/Par/Bits : 115200 8N1 │
│ F - Hardware Flow Control : No │
│ G - Software Flow Control : No
4、 再按Enter退出;
5、 设置完后保存好再退出;
6、 在命令行中输入minicom启动它;
第7章 tftp安装与配置
(只能用对接线连接)
1、 下载软件包
下载 tftp-server-0.43-1.i386.rpm和tftp-hpa-0.48.tar.gz
cp /mnt/hgfs/share/tftp-server-0.43-1.i386.rpm /arm/tftp-server-0.43-1.i386.rpm
cp /mnt/hgfs/share/tftp-hpa-0.48.tar.gz /arm/tftp-hpa-0.48.tar.gz
2、 安装tftp-server-0.43-1.i386.rpm 服务器
cd /arm
rpm -ivh --nodeps tftp-server-0.43-1.i386.rpm
(此时根目录下会多一个tftpboot的目录,是tftp的共享目录)
3、 编译安装tftp-hpa-0.48.tar.gz
tar vxfz tftp-hpa-0.48.tar.gz
cd tftp-hpa-0.48
make
make install
4、 /etc/xinetd.d/tftp文件配置:
vi /etc/xinetd.d/tftp
service tftp
{ socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /tftpboot -c
disable =no
per_source =11
cps =100 2
flags =IPv4
5、 }
6、 使用超级用户身份运行setup命令,在系统服务理选上tftp服务 [*]tftp
7、 启动tftp服务器
service xinetd restart
8、 测试tftp
netstat -au
第8章 nfs配置
1、 以root进入,控制台命令:
setup
在系统服务选项中选中[*]nfs,[*]portmap服务选项(用空格键选)
2、 编辑 /etc/exports 文件,内容如:
vi /etc/exports
/linuxnfs 192.168.1.*(rw,no_subtree_check,no_root_squash)
两部分之间要有一个空格
前半部分表示共享目录(共享目录一定不能用/mnt下的文件夹),后面表示对ip为59.64.158.*的主机赋予权限
其它参数:
ro read only
rw read write
no_root_squash
3、 在控制台执行以下两条命令,调动服务:
service portmap restart
service nfs restart
4、 nfs挂载,输入命令:
mkdir /linuxnfs
mkdir /mnt/nfs
mount -t nfs 59.64.158.95:/linuxnfs /mnt/nfs
如果你在/mnt/nfs 下可以看到NFS共享目录的内容,表示你NFS设置成功了。
5、 其它命令:
另外还可以使用一些命令查看NFS的各种状态:
showmount -e 可看有分享哪些目录
showmount -a 可看出所有的 mount
检查NFS的运行级别:
chkconfig --list portmap
chkconfig --list nfs
根据需要设置在相应的运行级别自动启动NFS:
chkconfig --level 235 portmap on
chkconfig --level 235 nfs on
6、 nfs启动慢:
清除/var/lib/nfs/rmtab中的全部内容
第9章 DHCP安装
1、 将dhcp-3.0pl2-6.16.i386.rpm拷贝到/arm目录下:
cp /mnt/hgfs/share/dhcp-3.0pl2-6.16.i386.rpm /arm/dhcp-3.0pl2-6.16.i386.rpm
2、 执行以下命令:
cd /arm
ls
rpm -ivh dhcp-3.0pl2-6.16.i386.rpm
cp /usr/share/doc/dhcp-3.0pl2/dhcpd.conf.sample /etc/dhcpd.conf
vi /etc/dhcpd.conf
显示内容修改参考:
ddns-update-style interim;
ignore client-updates;
#设置子网声明
subnet 192.168.1.0 netmask 255.255.255.0 {
#为DHCP设置默认网关
option routers
192.168.1.1;
#为DHCP设置子网掩码
option subnet-mask
255.255.255.0;
#
option nis-domain
"domain.org";
#
option domain-name
"domain.org";
#为DHCP设置DNS服务器地址
option domain-name-servers
202.112.10.36;
option time-offset
-18000;
# Eastern Standard Time
#
option ntp-servers
192.168.1.1;
#
option netbios-name-servers
192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#
option netbios-node-type 2;
#设置地址池
range dynamic-bootp 192.168.1.2 192.168.1.254;
default-lease-time 21600;
max-lease-time 43200;
# we want the nameserver to appear at a fixed address
host ns
{
next-server duandao.domain.com;
#当前计算机的MAC
hardware ethernet 00:0C:29:9B:63:84;
#当前计算机的固定IP
fixed-address 192.168.1.2;
}
}
3、 启动nfs,dhcpd,portmap
service nfs start
service portmap start
service dhcpd start
第10章 u-boot 1.1.6编译
1、 将内核源码u-boot-1.1.6-atmel9263.tar.bz2拷贝到/arm目录下;
cp /mnt/hgfs/share/u-boot-1.1.6-atmel9263.tar.bz2 /arm/u-boot-1.1.6-atmel9263.tar.bz2
2、 执行以下命令:
cd /arm
ls
tar xjvf u-boot-1.1.6-atmel9263.tar.bz2
ls
cd u-boot-1.1.6
ls
make distclean
make at91sam9263ek_config
make dep
make clean
make
3、 编译好的u-boot文件为/arm/u-boot-1.1.6/u-boot.bin
4、 cp /arm/u-boot-1.1.6/u-boot.bin /mnt/hgfs/share/u-boot.bin
或者cp /arm/u-boot-1.1.6/u-boot.bin /tftpboot/u-boot.bin
第11章 u-boot 1.3.4编译
1、 将内核源码u-boot-1.3.4-atmel9263.tar.bz2拷贝到/arm目录下;
cp /mnt/hgfs/share/u-boot-1.3.4.tar.gz /arm/
2、 执行以下命令
cd /arm
tar zxvf u-boot-1.3.4.tar.gz
cd u-boot-1.3.4
make distclean
make at91sam9263ek_dataflash_cs0_config
make dep
make clean
make
第12章 ARM Linux 2.6.20 内核编译
1、 将内核源码linux-2.6.20-atmel-nfs.tar.bz2拷贝到/arm目录下;
cp /mnt/hgfs/share/linux-2.6.20-atmel-nfs.tar.bz2 /arm/linux-2.6.20-atmel-nfs.tar.bz2
2、 执行以下命令:
cd /arm
ls
tar xjvf linux-2.6.20-atmel-nfs.tar.bz2
ls
cd linux-2.6.20
ls
make menuconfig
make Image
3、 编译好的uImage文件为/arm/linux-2.6.20/arch/arm/boot/uImge下
第13章 ARM u-boot烧写
(运行Windows下的tftp软件:tftpd32.exe,选择本机的IP作为服务器,并选择相应的默认路径;)
1、 安装SAM-BA v2.(X:\SINO9263\tools\Install AT91-ISP v1.10.exe);
2、 运行超级终端;或者是在Linux(这里有加载Linux0426)中打开终端,输入命令:minicom (终端)
3、 去掉跳线JP8;
4、 上电,超级终端显示Romboot;(如果此时没有Romboot,要检查是否连接,在它上面点左键)
5、 运行SAM-BA v2.6,选择usb/arm0和AT91SAM9263-EK,并点击connect;
6、 插上相应的跳线;
7、 初始化dataflash(CS0),执行excute;
8、 选择Erase all,执行Excute;(当光标闪烁时表明擦除完毕)
9、 选择“Send Boot file”, 执行Excute且选择dataflash的启动boot: dataflash_at91sam9263ek.bin(在一个名为”共享”的文件夹里);
10、 先从Linux中拷出u-boot,执行:
cp /arm/u-boot-1.1.6/u-boot.bin /mnt/hgfs/share/u-boot.bin
11、 在internal address 处填写0x8400 在send file name中选择u-boot.bin(在Dataflash中运行的uboot),执行 send file .
12、 退出,重启板子,即可在0超级终端中看到U-boot信息。此时点击Enter
下面就是执行第十五章的内容:
13、 开始输入第十四章中6中的命令(一条一条的输入),一直到7中的执行Linux内核下载命令:
tftp 22200000 uImage
14、 此时会出现表示是烧录成功
15、 然后执行第十四章的9中的命令。
第14章 Windows下的Ramdisk Linux编译与烧写
1、 执行
cd /arm/linux-2.6.20
进入Linux目录,执行
make menuconfig
注意选中 devices driver--->block devices--->Initial RAM filesystem and …选项
执行
make uImage
2、 将uImge从linux中拷出来,执行:
cp /arm/linux-2.6.20/arch/arm/boot/uImage /mnt/hgfs/share/uImage
(如果是Linux下:cp /arm/linux-2.6.20/arch/arm/boot/uImage /tftpboot/uImage)
3、 运行Windows下的tftp软件:tftpd32.exe,选择本机的IP作为服务器,并选择相应的默认路径;
4、 将uImage拷贝到tftp默认目录下;
5、 重启板子,直到有提示符(过程中注意击一键回车);
6、 将板子与Internet相连,然后执行以下命令,设置一个与主机相同网段的IP:
//服务器的ip地址
setenv serverip 192.168.1.2
//开发板的ip
setenv ipaddr 192.168.1.3
setenv ethaddr 192.168.1.3
//网关地址
setenv gatewayip 192.168.1.1
//该语句告诉内核是CRAMFS启动方式
setenv bootargs mem=64M console=ttyS0 115200 root=/dev/ram0 rw initrd=0x21100000,0x1100000
//从nand 0开始的地址读取0x200000字节的内核内容到sdram的0x22200000
setenv nf_kernel nand read 22200000 0 200000
setenv nf_ramdisk nand read 21100000 300000 1100000
setenv boot bootm 22200000
setenv bootcmd run nf_kernel\;run nf_ramdisk\;run boot
saveenv
printenv
//------------------------命令----------------
setenv serverip 192.168.1.2
setenv ipaddr 192.168.1.3
setenv ethaddr 192.168.1.3
setenv gatewayip 192.168.1.1
setenv bootargs mem=64M console=ttyS0 115200 root=/dev/ram0 rw initrd=0x21100000,0x1100000
setenv nf_kernel nand read 22200000 0 200000
setenv nf_ramdisk nand read 21100000 300000 1100000
setenv boot bootm 22200000
setenv bootcmd run nf_kernel\;run nf_ramdisk\;run boot
saveenv
printenv
7、 执行Linux内核下载命令:
tftp 22200000 uImage
8、 执行文件系统下载命令:
tftp 21100000 newramdisk.gz
9、 可选择执行Linux启动命令,在SDRAM中运行Linux:
bootm 22200000
也可以选择执行以下命令,将文件和内核烧写到nand:
nand scrub
nand write 22200000 0 200000
nand write 21100000 300000 1100000
然后依次执行以下几条命令启动系统:
run nf_kernel
run nf_ramdisk
run boot
10、 Linux启动后,超级终端即相关于Linux的控制台,可执行任何命令。
tftp 22200000 uImage.el
tftp 21100000 newramdisk.gz
nand scrub
nand write 22200000 0 200000
nand write 21100000 300000 1100000
boot
第15章 Windows下的nfs Linux编译与烧写
1、 将PC机网线,外网网线、开发板直接线同时连接到交换机上,并配置好虚拟机的IP、nfs、dhcpd等。
2、 在Linux下配置好nfs服务器;
执行命令:
service nfs start
service portmap start
service dhcpd start
3、 运行Windows下的tftp软件:tftpd32.exe,选择本机的IP作为服务器,并选择相应的默认路径;
4、 将uImage拷贝到tftp默认目录下;
cp /arm/linux-2.6.20/arch/arm/boot/uImage /mnt/hgfs/share/uImage
(如果是Linux下:cp /arm/linux-2.6.20/arch/arm/boot/uImage /tftpboot/uImage)
5、 重启板子,直到有提示符(过程中注意击一键回车);
6、 将板子与Internet相连,然后执行以下命令,设置一个与主机相同网段的IP:
//服务器的ip地址
setenv serverip 192.168.1.2
//开发板的ip
setenv ipaddr 192.168.1.3
setenv ethaddr 192.168.1.3
//网关地址
setenv gatewayip 192.168.1.1
//该语句告诉内核是NFS启动方式
setenv bootargs mem=64M console=ttyS0 115200 root=/dev/nfs nfsroot=192.168.1.2:/linuxnfs ip=192.168.1.3: 192.168.1.2: 192.168.1.1:255.255.255.0:::eth0:off
//从nand 0开始的地址读取0x200000字节的内核内容到sdram的0x22200000
setenv nf_kernel nand read 22200000 0 200000
setenv boot bootm 22200000
setenv bootcmd run nf_kernel\;run boot
saveenv
printenv
7、 执行Linux内核下载命令:
tftp 22200000 uImage;
8、 可选择执行Linux启动命令,在SDRAM中运行Linux:
bootm 22200000
也可以选择执行以下命令,将文件和内核烧写到nand:
nand erase
nand write 22200000 0 200000
然后依次执行以下几条命令启动系统:
boot
第16章 写第一个Linux程序
1、 建文件夹和文件:
mkdir /projects
cd /projects
mkdir hello
cd hello
vim main.c
2、 编译程序:
gcc main.c -o main
3、 执行程序:
./main
4、 进入main调试:
gdb main
第17章 写第一个嵌入式Linux程序
5、 建文件夹和文件:
mkdir /projects
cd /projects
mkdir hello
cd hello
vim main.c
6、 编译程序:
/opt/arm/usr/bin/arm-linux-gcc main.c -o main
7、 执行程序:
下载到嵌入式系统中,然后执行
./main
第18章 Vi命令
进入vi的命令
vi filename.c: 打开或新建文件,并将光标置于第一行首
vi +n filename.c: 打开文件,并将光标置于第n行首
vi + filename.c: 打开文件,并将光标置于最后一行首
vi +/pattern filename.c: 打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename.c: 在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename.c: 打开多个文件,依次进行编辑
[编辑]移动光标类命令
h: 光标左移一个字符
l: 光标右移一个字符
space: 光标右移一个字符
Backspace: 光标左移一个字符
k或Ctrl+p: 光标上移一行
j或Ctrl+n: 光标下移一行
Enter: 光标下移一行
w或W : 光标右移一个字至字首
b或B : 光标左移一个字至字首
e或E : 光标右移一个字至字尾
): 光标移至句尾
(: 光标移至句首
}: 光标移至段落开头
{: 光标移至段落结尾
nG: 光标移至第n行首
n+: 光标下移n行
n-: 光标上移n行
n$: 光标移至第n行尾
H: 光标移至屏幕顶行
M: 光标移至屏幕中间行
L: 光标移至屏幕最后行
0: 光标移至当前行首
$: 光标移至当前行尾
[编辑]屏幕翻滚类命令
Ctrl+u: 向文件首翻半屏
Ctrl+d: 向文件尾翻半屏
Ctrl+f: 向文件尾翻一屏
Ctrl+b: 向文件首翻一屏
nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
[编辑]插入文本类命令
i: 在光标前
I: 在当前行首
a: 光标后
A: 在当前行尾
o: 在当前行之下新开一行
O: 在当前行之上新开一行
r: 替换当前字符
R: 替换当前字符及其后的字符,直至按ESC键
s: 从当前光标位置处开始,以输入的文本替代指定数目的字符
S: 删除指定数目的行,并以所输入文本代替之
ncw或nCW: 修改指定数目的字
nCC: 修改指定数目的行
[编辑]删除命令
ndw或ndW: 删除光标处开始及其后的n-1个字
do: 删至行首
d$: 删至行尾
ndd: 删除当前行及其后n-1行
x或X: 删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u: 删除输入方式下所输入的文本
[编辑]搜索及替换命令
/pattern: 从光标开始处向文件尾搜索pattern
?pattern: 从光标开始处向文件首搜索pattern
n: 在同一方向重复上一次搜索命令
N: 在反方向上重复上一次搜索命令
:s/p1/p2/g: 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 将文件中所有p1均用p2替换
[编辑]选项设置
all: 列出所有选项设置情况
term: 设置终端类型
ignorance: 在搜索中忽略大小写
list: 显示制表位(Ctrl+I)和行尾标志($)
number: 显示行号
report: 显示由面向行的命令修改过的数目
terse: 显示简短的警告信息
warn: 在转到别的文件时若没保存当前文件则显示NO write信息
nomagic: 允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan: 禁止vi在搜索到达文件两端时,又从另一端开始
mesg: 允许vi显示其他用户用write写到自己终端上的信息
[编辑]最后行方式命令
Esc + shift + “:” 进入命令行方式
:n1,n2 co n3: 将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d: 将 n1行到n2行之间的内容删除
:w: 保存当前文件
:e filename: 打开文件filename进行编辑
:x: 保存当前文件并退出
:q: 退出vi
:q!: 不保存文件并退出vi
:!command: 执行shell命令command
:n1,n2 w!command: 将文件中n1行至n2行的内容作为command的输入并执行之, 若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command: 将命令command的输出结果放到当前行
[编辑]寄存器操作
"?nyy: 将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw: 将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl: 将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p: 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd: 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中
第19章 GCC和GDB命令
gcc的常用参数:
-c 只编译不链接,生成目标文件
-S 只编译不汇编,生产汇编代码
-E 只进行预处理
-g 在可执行程序中包含调试信息
-o file 将文件输出到file中
-v 显示gcc版本号
-I dir 在头文件搜索中添加dir目录(dir 为绝对路径)
-L dir 在库文件的搜索中添加dir目录(dir 为绝对路径)
-static 链接静态库
-library 链接名为library的库文件
gdb常用命令:
awatch
指定一个变量,如果这个变量被读或者被写,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令。
backtrace
显示函数调用得所有栈框架(stack frames)的 踪迹和当前函数的参数的值,bt是这个命令的简写。
break
设置一个断点,这个命令需要指定代码行或者函数名作为参数
clear
删除一个断点,这个命令需要制定代码行或者函数名作为参数
continue
调试器停止的地方继续执行
Ctrl-C
在当前位置停止执行正在执行的程序,断点在当前行
disable
禁止断点功能,这个命令需要禁止的断点在断点列表索引值作为参数
display
在断点的停止的地方,显示指定的表达式的值。(显示变量)
enable
允许断点功能,这个命令需要允许的断点在断点列表索引值作为参数
finish
继续执行,知道当前函数返回
ignore
忽略某个断点制定的次数。例:ignore 4 23 忽略断点4的23次运行,在第24次的时候中断
info breakpoints
查看断点信息
info display
查看设置的需要显示的表达式的信息
kill
终止当前debug的进程
list
显示10行代码。如果没有提供参数给这个命令,则从当前行开始显示10行代码。
如果提供了函数名作为参数,则从函数开头显示。如果提供代码行的编号作为参
数,这一行作为开头显示。
load
动态载入一个可执行文件到调试器。
next
执行下一行的源代码的所有指令。如果是函数调用,则也当作一行源代码,执行到此函数返回
nexti
执行下一行的源代码中的一条汇编指令
print
显示变量的值
ptype
显示变量的类型
return
强制从当前函数返回
run
从程序开始的地方执行
rwatch
指定一个变量,如果这个变量被读,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令。
set
设置变量的值。例如:set nval=54 将把54保存到nval变量中
step
继续执行程序下一行源代码的所有指令。如果是调用函数,这个命令将进入函数的内部,单步执行函数中代码。
stepi
继续执行程序下一行源代码中的汇编指令。如果是函数调用,这个命令将进入函数的内部,单步执行函数中的汇编代码。
txbreak
在当前函数的退出的点上设置一个临时的断点(只可使用一次)。
undisplay
删除一个display设置的变量显示。这个命令需要将display list中的索引做参数。
watch
指定一个变量,如果这个变量被写,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令。
whatis
显示变量的值和类型。
xbreak
在当前函数的退出的点上设置一个断点。
第20章 MAC为全0的解决办法
进行控制台后,输入以下命令:
ifconfig eth0 hw ether 00:e0:4c:4d:8d:5f
ifconfig eth0 59.64.158.97
第21章 Linux FTP服务器搭建
1、 下载最新的稳定版vsftpd-1.2.1.tar.gz
2、 卸载原有的rpm的vsftpd
3、 rpm -e vsftpd
4、 tar xvzf vsftpd-1.2.1.tar.gz
5、 cd vsftpd-1.2.1
6、 make
7、 useradd nobody
8、 mkdir /usr/share/empty
9、 mkdir /var/ftp
10、 useradd -d /var/ftp ftp
11、 chown root.root /var/ftp
12、 chmod og-w /var/ftp
13、 make install
说明:如果已经安装了vsftpd可以省略1-13步,如果原来没有安装vsftp,请按部就班。
14、 cp vsftpd.conf /etc/vsftpd.conf(现在,默认还是只能匿名用户登录。)
15、 vi /etc/vsftpd.conf
把anonmous_enable=YES改成NO(禁掉匿名链接,不安全。)
把local_enable=YES前的注释去掉(打开本地用户连接的权限。)
把write_enable=YES前的注释去掉(打开本地用户的写权限。)
把local_umask=022前的注释去掉
16、 输入setup命令,使能vsftpd服务,再输入:
service xinetd restart
service vsftpd restart
用命令
netstat -na –ip
查看21端口是否已经打开。
17、 客户端可以用以下命令登录ftp:
用户名:ftp
密码:ftp
18、 然后用get下载, put上传,下载的文件存放在进入ftp时的默认路径下
第22章 文件解压缩
1、 tar.tar文件解压:
如果是bzip2,命令格式:
先执行:bunzip2 filename.tar.tar,生成了filename.tar.tar.out文件再用tar命令来解压。
再执行:tar xvf filename.tar.tar.out
2、 工
第23章 Ramdisk新建
cd /
dd if=/dev/zero of=newramdisk bs=1k count=32768
losetup /dev/loop2 newramdisk
mkfs.ext2 /dev/loop2
mount -t ext2 /dev/loop2 /mnt/newramdisk
cd /tftpboot
gunzip ramdisk.gz
mount -t ext2 -o loop ramdisk /mnt/ramdisk
cd /
cp -rf -d /mnt/ramdisk/bin /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/dev /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/etc /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/home /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/init /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/lib /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/lost+found /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/proc /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/sbin /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/sys /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/tmp /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/usr /mnt/newramdisk/
cp -rf -d /mnt/ramdisk/var /mnt/newramdisk/
mknod /mnt/newramdisk/dev/fpgadev c 251 0
mkdir /mnt/newramdisk/projects
mkdir /mnt/newramdisk/projects/protect
cp -rf -d /linuxnfs/projects/protect/protect /mnt/newramdisk/projects/protect/
mkdir /mnt/newramdisk/projects/ultrasonic
cp -rf -d /linuxnfs/projects/ultrasonic/ultrasonic /mnt/newramdisk/projects/ultrasonic/
mkdir /mnt/newramdisk/projects/inputsys
cp -rf -d /linuxnfs/projects/inputsys/inputsystem.ko /mnt/newramdisk/projects/inputsys/
cp -rf -d /linuxnfs/projects/inputsys/Module.symvers /mnt/newramdisk/projects/inputsys/
cp -rf -d /linuxnfs/lib/libqte.so.2 /mnt/newramdisk/lib/libqte.so.2
cp -rf -d /linuxnfs/qt /mnt/newramdisk/
mkdir /mnt/newramdisk/rs
cp -rf -d /linuxnfs/rs/voice.snd /mnt/newramdisk/rs
修改rsC文件
cd /tftpboot
umount /mnt/ramdisk
gzip -9 ramdisk
cd /
umount /dev/loop2
losetup -d /dev/loop2
gzip -9 newramdisk
cp newramdisk.gz /tftpboot
第24章 Ramdisk增加文件
1、 先建一个目录提供给Ramdisk挂载:
mkdir /mnt/ramdisk
2、 把ramdisk.gz拷贝到/arm目录下以供使用:
cp /mnt/hgfs/share/ramdisk.gz /arm/ramdisk.gz
3、 将ramdisk.gz解压:
cd /arm
gunzip ramdisk.gz
4、 挂载Ramdisk:
mount -t ext2 -o loop ramdisk /mnt/ramdisk
cd /mnt/ramdisk
5、 在/mnt/ramdisk中进行相关操作即可
6、 御载Ramdisk:
cd /arm
umount /mnt/ramdisk
7、 Ramdisk打包:
gzip -9 ramdisk
mkdir /mnt/newramdisk
cd /tftpboot
gunzip newramdisk.gz
mount -t ext2 -o loop newramdisk /mnt/newramdisk
修改
umount /mnt/newramdisk
gzip -9 newramdisk
第25章 多级目录源码Makefile示例
1、 顶级Makefile:
TOPSRC = multdir
SUBSRC = sub
ADDSRC = add
SUBDIR = subdir
ADDDIR = adddir
SUBDIRS = $(SUBDIR) $(ADDDIR)
CC = gcc
CFLAGS = -Wall -O -g -I/mnt/hgfs/share/projects/multdir
$(TOPSRC):$(TOPSRC).o $(SUBDIR)/$(SUBSRC).o $(ADDDIR)/$(ADDSRC).o
$(CC) $(FLAGS) -o $(TOPSRC) $(TOPSRC).o $(SUBDIR)/$(SUBSRC).o $(ADDDIR)/$(ADDSRC).o
$(TOPSRC).o:$(TOPSRC).c
$(CC) -c $(TOPSRC).c
for i in $(SUBDIRS); do \
(cd $$i; make); \
done
sub:
@cd $(SUBDIR); make
add:
@cd $(ADDDIR); make
clean:
rm -f $(TOPSRC).o
rm -f $(TOPSRC)
for i in $(SUBDIRS); do \
(cd $$i; make clean);