資料介紹
1.實(shí)驗(yàn)?zāi)康?br />
通過指定指令的vi操作練習(xí),使讀者能夠熟練使用vi中的常見操作,并且熟悉vi的3種模式,如果讀者能夠熟練掌握實(shí)驗(yàn)內(nèi)容中所要求的內(nèi)容,則表明對(duì)vi的操作已經(jīng)很熟練了。
2.實(shí)驗(yàn)內(nèi)容
?。?)在“/root”目錄下建一個(gè)名為“vi”的目錄。
(2)進(jìn)入“vi”目錄。
?。?)將文件“/etc/inittab”復(fù)制到“vi”目錄下。
?。?)使用vi打開“vi”目錄下的inittab。
?。?)設(shè)定行號(hào),指出設(shè)定initdefault(類似于“id:5:initdefault”)的所在行號(hào)。
?。?)將光標(biāo)移到該行。
?。?)復(fù)制該行內(nèi)容。
?。?)將光標(biāo)移到最后一行行首。
?。?)粘貼復(fù)制行的內(nèi)容。
?。?0)撤消第9步的動(dòng)作。
?。?1)將光標(biāo)移動(dòng)到最后一行的行尾。
?。?2)粘貼復(fù)制行的內(nèi)容。
(13)光標(biāo)移到“si::sysinit:/etc/rc.d/rc.sysinit”。
?。?4)刪除該行。
?。?5)存盤但不退出。
(16)將光標(biāo)移到首行。
(17)插入模式下輸入“Hello,this is vi world!”。
(18)返回命令行模式。
?。?9)向下查找字符串“0:wait”。
?。?0)再向上查找字符串“halt”。
?。?1)強(qiáng)制退出vi,不存盤。
分別指出每個(gè)命令處于何種模式下?
3.實(shí)驗(yàn)步驟
(1)mkdir /root/vi
?。?)cd /root/vi
(3)cp /etc/inittab 。/
(4)vi 。/inittab
?。?):set nu(底行模式)
?。?)17《enter》(命令行模式)
(7)yy
?。?)G
(9)p
?。?0)u
?。?1)$
?。?2)p
?。?3)21G
?。?4)dd
?。?5):w(底行模式)
?。?6)1G
(17)i 并輸入“Hello,this is vi world!”(插入模式)
?。?8)Esc
?。?9)/0:wait(命令行模式)
?。?0)?halt
?。?1):q!(底行模式)
4.實(shí)驗(yàn)結(jié)果
該實(shí)驗(yàn)的最終結(jié)果是對(duì)“/root/inittab”增加了一行復(fù)制的內(nèi)容:“id:5:initdefault”。
3.7.2 用gdb調(diào)試程序的bug
1.實(shí)驗(yàn)?zāi)康?br /> 通過調(diào)試一個(gè)有問題的程序,使讀者進(jìn)一步熟練使用vi操作,而且熟練掌握gcc編譯命令及gdb的調(diào)試命令,通過對(duì)有問題程序的跟蹤調(diào)試,進(jìn)一步提高發(fā)現(xiàn)問題和解決問題的能力。這是一個(gè)很小的程序,只有35行,希望讀者認(rèn)真調(diào)試。
2.實(shí)驗(yàn)內(nèi)容
(1)使用vi編輯器,將以下代碼輸入到名為greet.c的文件中。此代碼的原意為輸出倒序main函數(shù)中定義的字符串,但結(jié)果顯示沒有輸出。代碼如下所示:
#include 《stdio.h》
int display1(char *string);
int display2(char *string);
int main ()
{
char string[] = “Embedded Linux”;
display1 (string);
display2 (string);
}
int display1 (char *string)
{
printf (“The original string is %s \n”, string);
}
int display2 (char *string1)
{
char *string2;
int size,i;
size = strlen (string1);
string2 = (char *) malloc (size + 1);
for (i = 0; i 《 size; i++)
{
string2[size - i] = string1[i];
}
string2[size+1] = ‘ ’;
printf(“The string afterward is %s\n”,string2);
}
?。?)使用gcc編譯這段代碼,注意要加上“-g”選項(xiàng)以方便之后的調(diào)試。
?。?)運(yùn)行生成的可執(zhí)行文件,觀察運(yùn)行結(jié)果。
?。?)使用gdb調(diào)試程序,通過設(shè)置斷點(diǎn)、單步跟蹤,一步步找出錯(cuò)誤所在。
?。?)糾正錯(cuò)誤,更改源程序并得到正確的結(jié)果。
3.實(shí)驗(yàn)步驟
(1)在工作目錄上新建文件greet.c,并用vi啟動(dòng):vi greet.c。
?。?)在vi中輸入以上代碼。
(3)在vi中保存并退出,使用命令“:wq”。
(4)用gcc編譯:gcc -g greet.c -o greet。
(5)運(yùn)行g(shù)reet,使用命令“。/greet”,輸出為:
The original string is Embedded Linux
The string afterward is
可見,該程序沒有能夠倒序輸出。
?。?)啟動(dòng)gdb調(diào)試:gdb greet。
?。?)查看源代碼,使用命令“l(fā)”。
(8)在30行(for循環(huán)處)設(shè)置斷點(diǎn),使用命令“b 30”。
(9)在33行(printf函數(shù)處)設(shè)置斷點(diǎn),使用命令“b 33”。
?。?0)查看斷點(diǎn)設(shè)置情況,使用命令“info b”。
(11)運(yùn)行代碼,使用命令“r”。
?。?2)單步運(yùn)行代碼,使用命令“n”。
?。?3)查看暫停點(diǎn)變量值,使用命令“p string2[size - i]”。
?。?4)繼續(xù)單步運(yùn)行代碼數(shù)次,并檢查string2[size-1]的值是否正確。
(15)繼續(xù)程序的運(yùn)行,使用命令“c”。
?。?6)程序在printf前停止運(yùn)行,此時(shí)依次查看string2[0]、string2[1]…,發(fā)現(xiàn)string[0]沒有被正確賦值,而后面的賦值都是正確的,這時(shí),定位程序第31行,發(fā)現(xiàn)程序運(yùn)行結(jié)果錯(cuò)誤的原因在于“size-1”。由于i只能增到“size-1”,這樣string2[0]就永遠(yuǎn)不能被賦值而保持NULL,故不能輸出任何結(jié)果。
(17)退出gdb,使用命令“q”。
?。?8)重新編輯greet.c,把其中的“string2[size - i] = string1[i]”改為“string2[size – i - 1] = string1[i];”即可。
?。?9)使用gcc重新編譯:gcc -g greet.c -o greet。
?。?0)查看運(yùn)行結(jié)果:。/greet
The original string is Embedded Linux
The string afterward is xuniL deddedbmE
這時(shí),輸出結(jié)果正確。
4.實(shí)驗(yàn)結(jié)果
將原來有錯(cuò)的程序經(jīng)過gdb調(diào)試,找出問題所在,并修改源代碼,輸出正確的倒序顯示字符串的結(jié)果。
3.7.3 編寫包含多文件的makefile
1.實(shí)驗(yàn)?zāi)康?br /> 通過對(duì)包含多文件的makefile的編寫,熟悉各種形式的makefile,并且進(jìn)一步加深對(duì)makefile中用戶自定義變量、自動(dòng)變量及預(yù)定義變量的理解。
2.實(shí)驗(yàn)過程
?。?)用vi在同一目錄下編輯兩個(gè)簡(jiǎn)單的hello程序,如下所示:
#hello.c
#include “hello.h”
int main()
{
printf(“Hello everyone!\n”);
}
#hello.h
#include 《stdio.h》
?。?)仍在同一目錄下用vi編輯makefile,且不使用變量替換,用一個(gè)目標(biāo)體實(shí)現(xiàn)(即直接將hello.c和hello.h編譯成hello目標(biāo)體)。然后用make驗(yàn)證所編寫的makefile是否正確。
?。?)將上述makefile使用變量替換實(shí)現(xiàn)。同樣用make驗(yàn)證所編寫的makefile是否正確。
(4)編輯另一個(gè)makefile,取名為makefile1,不使用變量替換,但用兩個(gè)目標(biāo)體實(shí)現(xiàn)(也就是首先將hello.c和hello.h編譯為hello.o,再將hello.o編譯為hello),再用make的“-f”選項(xiàng)驗(yàn)證這個(gè)makefile1的正確性。
?。?)將上述makefile1使用變量替換實(shí)現(xiàn)。
3.實(shí)驗(yàn)步驟
?。?)用vi打開上述兩個(gè)代碼文件“hello.c”和“hello.h”。
?。?)在shell命令行中用gcc嘗試編譯,使用命令:“gcc hello.c –o hello”,并運(yùn)行hello可執(zhí)行文件查看結(jié)果。
(3)刪除此次編譯的可執(zhí)行文件:rm hello。
(4)用vi編輯makefile,如下所示:
hello:hello.c hello.h
gcc hello.c -o hello
?。?)退出保存,在shell中鍵入:make,查看結(jié)果。
(6)再次用vi打開makefile,用變量進(jìn)行替換,如下所示:
OBJS :=hello.o
CC :=gcc
hello:$(OBJS)
$(CC) $^ -o $@
?。?)退出保存,在shell中鍵入make,查看結(jié)果。
(8)用vi編輯makefile1,如下所示:
hello:hello.o
gcc hello.o -o hello
hello.o:hello.c hello.h
gcc -c hello.c -o hello.o
?。?)退出保存,在shell中鍵入:make -f makefile1,查看結(jié)果。
?。?0)再次用vi編輯makefile1,如下所示:
OBJS1 :=hello.o
OBJS2 :=hello.c hello.h
CC :=gcc
hello:$(OBJS1)
$(CC) $^ -o $@
$(OBJS1):$(OBJS2)
$(CC) -c $《 -o $@
在這里請(qǐng)注意區(qū)別“$^”和“$《”。
?。?1)退出保存,在shell中鍵入make -f makefile1,查看結(jié)果。
4.實(shí)驗(yàn)結(jié)果
各種不同形式的makefile都能正確地完成其功能。
3.7.4 使用autotools生成包含多文件的makefile
1.實(shí)驗(yàn)?zāi)康?br /> 通過使用autotools生成包含多文件的makefile,進(jìn)一步掌握autotools的使用方法。同時(shí),掌握Linux下安裝軟件的常用方法。
2.實(shí)驗(yàn)過程
?。?)在原目錄下新建文件夾auto。
?。?)將上例的兩個(gè)代碼文件“hello.c”和“hello.h”復(fù)制到該目錄下。
?。?)使用autoscan生成configure.scan。
?。?)編輯configure.scan,修改相關(guān)內(nèi)容,并將其重命名為configure.in。
(5)使用aclocal生成aclocal.m4。
(6)使用autoconf生成configure。
(7)使用autoheader生成config.h.in。
?。?)編輯makefile.am。
?。?)使用automake生成makefile.in。
?。?0)使用configure生成makefile。
?。?1)使用make生成hello可執(zhí)行文件,并在當(dāng)前目錄下運(yùn)行hello查看結(jié)果。
?。?2)使用make install將hello安裝到系統(tǒng)目錄下,并運(yùn)行,查看結(jié)果。
?。?3)使用make dist生成hello壓縮包。
?。?4)解壓hello壓縮包。
?。?5)進(jìn)入解壓目錄。
?。?6)在該目錄下安裝hello軟件。
3.實(shí)驗(yàn)步驟
?。?)mkdir 。/auto。
?。?)cp hello.* 。/auto(假定原先在“hello.c”文件目錄下)。
(3)命令:autoscan。
(4)使用vi編輯configure.scan為:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(hello, 1.0)
AM_INIT_AUTOMAKE(hello,1.0)
AC_CONFIG_SRCDIR([hello.h])
AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT(makefile)
(5)保存退出,并重命名為configure.in。
(6)運(yùn)行:aclocal。
?。?)運(yùn)行:autoconf,并用ls查看是否生成了configure可執(zhí)行文件。
?。?)運(yùn)行:autoheader。
(9)用vi編輯makefile.am文件為:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=hello.c hello.h
?。?0)運(yùn)行:automake,然后運(yùn)行automake –a。
?。?1)運(yùn)行:。/configure。
?。?2)運(yùn)行:make。
?。?3)運(yùn)行:。/hello,查看結(jié)果是否正確。
?。?4)運(yùn)行:make install。
?。?5)運(yùn)行:hello,查看結(jié)果是否正確。
?。?6)運(yùn)行:make dist。
?。?7)在當(dāng)前目錄下解壓hello-1.0.tar.gz:tar –zxvf hello-1.0.tar.gz。
?。?8)進(jìn)入解壓目錄:cd 。/hello-1.0。
?。?9)下面開始Linux下常見的安裝軟件步驟:。/configure。
?。?0)運(yùn)行:make。
?。?1)運(yùn)行:。/hello(在正常安裝時(shí)這一步可省略)。
?。?2)運(yùn)行:make install。
?。?3)運(yùn)行:hello,查看結(jié)果是否正確。
4.實(shí)驗(yàn)結(jié)果
能夠正確使用autotools生成makefile,并且能夠成功安裝短小的hello軟件。
?
2.實(shí)驗(yàn)內(nèi)容
?。?)在“/root”目錄下建一個(gè)名為“vi”的目錄。
(2)進(jìn)入“vi”目錄。
?。?)將文件“/etc/inittab”復(fù)制到“vi”目錄下。
?。?)使用vi打開“vi”目錄下的inittab。
?。?)設(shè)定行號(hào),指出設(shè)定initdefault(類似于“id:5:initdefault”)的所在行號(hào)。
?。?)將光標(biāo)移到該行。
?。?)復(fù)制該行內(nèi)容。
?。?)將光標(biāo)移到最后一行行首。
?。?)粘貼復(fù)制行的內(nèi)容。
?。?0)撤消第9步的動(dòng)作。
?。?1)將光標(biāo)移動(dòng)到最后一行的行尾。
?。?2)粘貼復(fù)制行的內(nèi)容。
(13)光標(biāo)移到“si::sysinit:/etc/rc.d/rc.sysinit”。
?。?4)刪除該行。
?。?5)存盤但不退出。
(16)將光標(biāo)移到首行。
(17)插入模式下輸入“Hello,this is vi world!”。
(18)返回命令行模式。
?。?9)向下查找字符串“0:wait”。
?。?0)再向上查找字符串“halt”。
?。?1)強(qiáng)制退出vi,不存盤。
分別指出每個(gè)命令處于何種模式下?
3.實(shí)驗(yàn)步驟
(1)mkdir /root/vi
?。?)cd /root/vi
(3)cp /etc/inittab 。/
(4)vi 。/inittab
?。?):set nu(底行模式)
?。?)17《enter》(命令行模式)
(7)yy
?。?)G
(9)p
?。?0)u
?。?1)$
?。?2)p
?。?3)21G
?。?4)dd
?。?5):w(底行模式)
?。?6)1G
(17)i 并輸入“Hello,this is vi world!”(插入模式)
?。?8)Esc
?。?9)/0:wait(命令行模式)
?。?0)?halt
?。?1):q!(底行模式)
4.實(shí)驗(yàn)結(jié)果
該實(shí)驗(yàn)的最終結(jié)果是對(duì)“/root/inittab”增加了一行復(fù)制的內(nèi)容:“id:5:initdefault”。
3.7.2 用gdb調(diào)試程序的bug
1.實(shí)驗(yàn)?zāi)康?br /> 通過調(diào)試一個(gè)有問題的程序,使讀者進(jìn)一步熟練使用vi操作,而且熟練掌握gcc編譯命令及gdb的調(diào)試命令,通過對(duì)有問題程序的跟蹤調(diào)試,進(jìn)一步提高發(fā)現(xiàn)問題和解決問題的能力。這是一個(gè)很小的程序,只有35行,希望讀者認(rèn)真調(diào)試。
2.實(shí)驗(yàn)內(nèi)容
(1)使用vi編輯器,將以下代碼輸入到名為greet.c的文件中。此代碼的原意為輸出倒序main函數(shù)中定義的字符串,但結(jié)果顯示沒有輸出。代碼如下所示:
#include 《stdio.h》
int display1(char *string);
int display2(char *string);
int main ()
{
char string[] = “Embedded Linux”;
display1 (string);
display2 (string);
}
int display1 (char *string)
{
printf (“The original string is %s \n”, string);
}
int display2 (char *string1)
{
char *string2;
int size,i;
size = strlen (string1);
string2 = (char *) malloc (size + 1);
for (i = 0; i 《 size; i++)
{
string2[size - i] = string1[i];
}
string2[size+1] = ‘ ’;
printf(“The string afterward is %s\n”,string2);
}
?。?)使用gcc編譯這段代碼,注意要加上“-g”選項(xiàng)以方便之后的調(diào)試。
?。?)運(yùn)行生成的可執(zhí)行文件,觀察運(yùn)行結(jié)果。
?。?)使用gdb調(diào)試程序,通過設(shè)置斷點(diǎn)、單步跟蹤,一步步找出錯(cuò)誤所在。
?。?)糾正錯(cuò)誤,更改源程序并得到正確的結(jié)果。
3.實(shí)驗(yàn)步驟
(1)在工作目錄上新建文件greet.c,并用vi啟動(dòng):vi greet.c。
?。?)在vi中輸入以上代碼。
(3)在vi中保存并退出,使用命令“:wq”。
(4)用gcc編譯:gcc -g greet.c -o greet。
(5)運(yùn)行g(shù)reet,使用命令“。/greet”,輸出為:
The original string is Embedded Linux
The string afterward is
可見,該程序沒有能夠倒序輸出。
?。?)啟動(dòng)gdb調(diào)試:gdb greet。
?。?)查看源代碼,使用命令“l(fā)”。
(8)在30行(for循環(huán)處)設(shè)置斷點(diǎn),使用命令“b 30”。
(9)在33行(printf函數(shù)處)設(shè)置斷點(diǎn),使用命令“b 33”。
?。?0)查看斷點(diǎn)設(shè)置情況,使用命令“info b”。
(11)運(yùn)行代碼,使用命令“r”。
?。?2)單步運(yùn)行代碼,使用命令“n”。
?。?3)查看暫停點(diǎn)變量值,使用命令“p string2[size - i]”。
?。?4)繼續(xù)單步運(yùn)行代碼數(shù)次,并檢查string2[size-1]的值是否正確。
(15)繼續(xù)程序的運(yùn)行,使用命令“c”。
?。?6)程序在printf前停止運(yùn)行,此時(shí)依次查看string2[0]、string2[1]…,發(fā)現(xiàn)string[0]沒有被正確賦值,而后面的賦值都是正確的,這時(shí),定位程序第31行,發(fā)現(xiàn)程序運(yùn)行結(jié)果錯(cuò)誤的原因在于“size-1”。由于i只能增到“size-1”,這樣string2[0]就永遠(yuǎn)不能被賦值而保持NULL,故不能輸出任何結(jié)果。
(17)退出gdb,使用命令“q”。
?。?8)重新編輯greet.c,把其中的“string2[size - i] = string1[i]”改為“string2[size – i - 1] = string1[i];”即可。
?。?9)使用gcc重新編譯:gcc -g greet.c -o greet。
?。?0)查看運(yùn)行結(jié)果:。/greet
The original string is Embedded Linux
The string afterward is xuniL deddedbmE
這時(shí),輸出結(jié)果正確。
4.實(shí)驗(yàn)結(jié)果
將原來有錯(cuò)的程序經(jīng)過gdb調(diào)試,找出問題所在,并修改源代碼,輸出正確的倒序顯示字符串的結(jié)果。
3.7.3 編寫包含多文件的makefile
1.實(shí)驗(yàn)?zāi)康?br /> 通過對(duì)包含多文件的makefile的編寫,熟悉各種形式的makefile,并且進(jìn)一步加深對(duì)makefile中用戶自定義變量、自動(dòng)變量及預(yù)定義變量的理解。
2.實(shí)驗(yàn)過程
?。?)用vi在同一目錄下編輯兩個(gè)簡(jiǎn)單的hello程序,如下所示:
#hello.c
#include “hello.h”
int main()
{
printf(“Hello everyone!\n”);
}
#hello.h
#include 《stdio.h》
?。?)仍在同一目錄下用vi編輯makefile,且不使用變量替換,用一個(gè)目標(biāo)體實(shí)現(xiàn)(即直接將hello.c和hello.h編譯成hello目標(biāo)體)。然后用make驗(yàn)證所編寫的makefile是否正確。
?。?)將上述makefile使用變量替換實(shí)現(xiàn)。同樣用make驗(yàn)證所編寫的makefile是否正確。
(4)編輯另一個(gè)makefile,取名為makefile1,不使用變量替換,但用兩個(gè)目標(biāo)體實(shí)現(xiàn)(也就是首先將hello.c和hello.h編譯為hello.o,再將hello.o編譯為hello),再用make的“-f”選項(xiàng)驗(yàn)證這個(gè)makefile1的正確性。
?。?)將上述makefile1使用變量替換實(shí)現(xiàn)。
3.實(shí)驗(yàn)步驟
?。?)用vi打開上述兩個(gè)代碼文件“hello.c”和“hello.h”。
?。?)在shell命令行中用gcc嘗試編譯,使用命令:“gcc hello.c –o hello”,并運(yùn)行hello可執(zhí)行文件查看結(jié)果。
(3)刪除此次編譯的可執(zhí)行文件:rm hello。
(4)用vi編輯makefile,如下所示:
hello:hello.c hello.h
gcc hello.c -o hello
?。?)退出保存,在shell中鍵入:make,查看結(jié)果。
(6)再次用vi打開makefile,用變量進(jìn)行替換,如下所示:
OBJS :=hello.o
CC :=gcc
hello:$(OBJS)
$(CC) $^ -o $@
?。?)退出保存,在shell中鍵入make,查看結(jié)果。
(8)用vi編輯makefile1,如下所示:
hello:hello.o
gcc hello.o -o hello
hello.o:hello.c hello.h
gcc -c hello.c -o hello.o
?。?)退出保存,在shell中鍵入:make -f makefile1,查看結(jié)果。
?。?0)再次用vi編輯makefile1,如下所示:
OBJS1 :=hello.o
OBJS2 :=hello.c hello.h
CC :=gcc
hello:$(OBJS1)
$(CC) $^ -o $@
$(OBJS1):$(OBJS2)
$(CC) -c $《 -o $@
在這里請(qǐng)注意區(qū)別“$^”和“$《”。
?。?1)退出保存,在shell中鍵入make -f makefile1,查看結(jié)果。
4.實(shí)驗(yàn)結(jié)果
各種不同形式的makefile都能正確地完成其功能。
3.7.4 使用autotools生成包含多文件的makefile
1.實(shí)驗(yàn)?zāi)康?br /> 通過使用autotools生成包含多文件的makefile,進(jìn)一步掌握autotools的使用方法。同時(shí),掌握Linux下安裝軟件的常用方法。
2.實(shí)驗(yàn)過程
?。?)在原目錄下新建文件夾auto。
?。?)將上例的兩個(gè)代碼文件“hello.c”和“hello.h”復(fù)制到該目錄下。
?。?)使用autoscan生成configure.scan。
?。?)編輯configure.scan,修改相關(guān)內(nèi)容,并將其重命名為configure.in。
(5)使用aclocal生成aclocal.m4。
(6)使用autoconf生成configure。
(7)使用autoheader生成config.h.in。
?。?)編輯makefile.am。
?。?)使用automake生成makefile.in。
?。?0)使用configure生成makefile。
?。?1)使用make生成hello可執(zhí)行文件,并在當(dāng)前目錄下運(yùn)行hello查看結(jié)果。
?。?2)使用make install將hello安裝到系統(tǒng)目錄下,并運(yùn)行,查看結(jié)果。
?。?3)使用make dist生成hello壓縮包。
?。?4)解壓hello壓縮包。
?。?5)進(jìn)入解壓目錄。
?。?6)在該目錄下安裝hello軟件。
3.實(shí)驗(yàn)步驟
?。?)mkdir 。/auto。
?。?)cp hello.* 。/auto(假定原先在“hello.c”文件目錄下)。
(3)命令:autoscan。
(4)使用vi編輯configure.scan為:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(hello, 1.0)
AM_INIT_AUTOMAKE(hello,1.0)
AC_CONFIG_SRCDIR([hello.h])
AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT(makefile)
(5)保存退出,并重命名為configure.in。
(6)運(yùn)行:aclocal。
?。?)運(yùn)行:autoconf,并用ls查看是否生成了configure可執(zhí)行文件。
?。?)運(yùn)行:autoheader。
(9)用vi編輯makefile.am文件為:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=hello.c hello.h
?。?0)運(yùn)行:automake,然后運(yùn)行automake –a。
?。?1)運(yùn)行:。/configure。
?。?2)運(yùn)行:make。
?。?3)運(yùn)行:。/hello,查看結(jié)果是否正確。
?。?4)運(yùn)行:make install。
?。?5)運(yùn)行:hello,查看結(jié)果是否正確。
?。?6)運(yùn)行:make dist。
?。?7)在當(dāng)前目錄下解壓hello-1.0.tar.gz:tar –zxvf hello-1.0.tar.gz。
?。?8)進(jìn)入解壓目錄:cd 。/hello-1.0。
?。?9)下面開始Linux下常見的安裝軟件步驟:。/configure。
?。?0)運(yùn)行:make。
?。?1)運(yùn)行:。/hello(在正常安裝時(shí)這一步可省略)。
?。?2)運(yùn)行:make install。
?。?3)運(yùn)行:hello,查看結(jié)果是否正確。
4.實(shí)驗(yàn)結(jié)果
能夠正確使用autotools生成makefile,并且能夠成功安裝短小的hello軟件。
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式linux報(bào)警,嵌入式Linux下LED報(bào)警燈驅(qū)動(dòng)設(shè)計(jì)及編程.doc
- Arduino的實(shí)驗(yàn)例程之實(shí)時(shí)時(shí)鐘DS1302的詳細(xì)資料說明 25次下載
- Linux下C語言編程入門教程詳細(xì)說明 39次下載
- 信號(hào)與定時(shí)器的使用在Linux系統(tǒng)下的C語言程序免費(fèi)下載
- LINUX系統(tǒng)教程之如何在Linux系統(tǒng)下進(jìn)行編程 9次下載
- Linux操作系統(tǒng)實(shí)用教程之如何進(jìn)行Linux系統(tǒng)下的編程管理 5次下載
- Linux操作系統(tǒng)下C語言編程入門.pdf 95次下載
- Linux下C編程 嵌入式開發(fā) 31次下載
- 基于Linux操作系統(tǒng)下C語言編程入門 11次下載
- linux 下C編程 9次下載
- Linux下C語言編程概述 0次下載
- Linux基礎(chǔ)命令之實(shí)驗(yàn)內(nèi)容與小結(jié) 0次下載
- Linux下C編程電子書 0次下載
- linux下c語言編程pdf 0次下載
- Linux操作系統(tǒng)-C語言編程入門-pdf
- Linux 下GCC的編譯 2026次閱讀
- Linux 下的make 工具和 Makefile 859次閱讀
- 深入探索Linux中的C語言 1228次閱讀
- Linux需要學(xué)習(xí)哪些內(nèi)容? 1460次閱讀
- Linux系統(tǒng)編程有哪些優(yōu)勢(shì) 1224次閱讀
- 虛擬機(jī):Linux查看tar包文件內(nèi)容的方法 6541次閱讀
- 為什么Linus不用C井語言寫Linux系統(tǒng) 3662次閱讀
- 嵌入式系統(tǒng)C語言編程實(shí)戰(zhàn)教程合集 9264次閱讀
- 淺談嵌入式Linux下的C語言編程知識(shí)要點(diǎn) 4572次閱讀
- 嵌入式Linux下的C編程知識(shí)要點(diǎn)匯總 3040次閱讀
- 基于嵌入式linux系統(tǒng)下的串口編程具體設(shè)置詳解 6843次閱讀
- 關(guān)于Linux下多線程編程技術(shù)學(xué)習(xí)總結(jié) 2135次閱讀
- mybatis使用經(jīng)驗(yàn)小結(jié) 1973次閱讀
- ZedBoard上的點(diǎn)燈簽名實(shí)驗(yàn)(三)linux內(nèi)核引導(dǎo) 746次閱讀
- Linux下ARM 和單片機(jī)的串口通信設(shè)計(jì) 3431次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多