微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux下C编程基础之:实验内容

Linux下C编程基础之:实验内容

时间:08-13 来源:3721RD 点击:

(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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top