Linux下C编程基础之:实验内容
(17)退出gdb,使用命令"q"。
(18)重新编辑greet.c,把其中的"string2[size - i] = string1[i]"改为"string2[size – i - 1] = string1[i];"即可。
(19)使用gcc重新编译:gcc -g greet.c -o greet。
(20)查看运行结果:./greet
The original string is Embedded Linux
The string afterward is xuniL deddedbmE
这时,输出结果正确。
4.实验结果
将原来有错的程序经过gdb调试,找出问题所在,并修改源代码,输出正确的倒序显示字符串的结果。
3.7.3 编写包含多文件的makefile
1.实验目的
通过对包含多文件的makefile的编写,熟悉各种形式的makefile,并且进一步加深对makefile中用户自定义变量、自动变量及预定义变量的理解。
2.实验过程
(1)用vi在同一目录下编辑两个简单的hello程序,如下所示:
#hello.c
#include "hello.h"
int main()
{
printf("Hello everyone!\n");
}
#hello.h
#include <stdio.h>
(2)仍在同一目录下用vi编辑makefile,且不使用变量替换,用一个目标体实现(即直接将hello.c和hello.h编译成hello目标体)。然后用make验证所编写的makefile是否正确。
(3)将上述makefile使用变量替换实现。同样用make验证所编写的makefile是否正确。
(4)编辑另一个makefile,取名为makefile1,不使用变量替换,但用两个目标体实现(也就是首先将hello.c和hello.h编译为hello.o,再将hello.o编译为hello),再用make的"-f"选项验证这个makefile1的正确性。
(5)将上述makefile1使用变量替换实现。
3.实验步骤
(1)用vi打开上述两个代码文件"hello.c"和"hello.h"。
(2)在shell命令行中用gcc尝试编译,使用命令:"gcc hello.c –o hello",并运行hello可执行文件查看结果。
(3)删除此次编译的可执行文件:rm hello。
(4)用vi编辑makefile,如下所示:
hello:hello.c hello.h
gcc hello.c -o hello
(5)退出保存,在shell中键入:make,查看结果。
(6)再次用vi打开makefile,用变量进行替换,如下所示:
OBJS :=hello.o
CC :=gcc
hello:$(OBJS)
$(CC) $^ -o $@
(7)退出保存,在shell中键入make,查看结果。
(8)用vi编辑makefile1,如下所示:
hello:hello.o
gcc hello.o -o hello
hello.o:hello.c hello.h
gcc -c hello.c -o hello.o
(9)退出保存,在shell中键入:make -f makefile1,查看结果。
(10)再次用vi编辑makefile1,如下所示:
OBJS1 :=hello.o
OBJS2 :=hello.c hello.h
CC :=gcc
hello:$(OBJS1)
$(CC) $^ -o $@
$(OBJS1):$(OBJS2)
$(CC) -c $< -o $@
在这里请注意区别"$^"和"$<"。
(11)退出保存,在shell中键入make -f makefile1,查看结果。
4.实验结果
各种不同形式的makefile都能正确地完成其功能。
3.7.4 使用autotools生成包含多文件的makefile
1.实验目的
通过使用autotools生成包含多文件的makefile,进一步掌握autotools的使用方法。同时,掌握Linux下安装软件的常用方法。
2.实验过程
(1)在原目录下新建文件夹auto。
(2)将上例的两个代码文件"hello.c"和"hello.h"复制到该目录下。
(3)使用autoscan生成configure.scan。
(4)编辑configure.scan,修改相关内容,并将其重命名为configure.in。
(5)使用aclocal生成aclocal.m4。
(6)使用autoconf生成configure。
(7)使用autoheader生成config.h.in。
(8)编辑makefile.am。
(9)使用automake生成makefile.in。
(10)使用configure生成makefile。
(11)使用make生成hello可执行文件,并在当前目录下运行hello查看结果。
(12)使用make install将hello安装到系统目录下,并运行,查看结果。
(13)使用make dist生成hello压缩包。
(14)解压hello压缩包。
(15)进入解压目录。
(16)在该目录下安装hello软件。
3.实验步骤
(1)mkdir ./auto。
(2)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, structu
- Linux下C编程基础之:常用编辑器(08-13)
- Linux下C编程基础之:gcc编译器(08-13)
- Linux下C编程基础之:gdb调试器(08-13)
- Linux下C编程基础之:make工程管理器(08-13)
- Linux下C编程基础之:使用autotools(08-13)
- Linux下C编程基础之:本章小结与思考与练习(08-13)