中北大学嵌入式习题答案第5章

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五章 linux与C语言编程基础

一、填空题

1、在宿主机上使用编译器软件将嵌入式应用、嵌入式操作系统编译成为可以在目标机上运行代码的过程,称为交叉编译,而采用的编译器称为交叉编译器。

2、C语言中采用 _ asm 标记实现嵌汇编。

3、使用gcc命令若想生成调试信息,应该给gcc加参数 -g ,若想生成警告信息,应该给gcc加参数 -Wall 。

4、有源文件test.c,若想生成目标文件test.o,正确的命令是 gcc -c test.c 。

5、gdb对可执行文件进行调试。

6、工程管理器make读入的配置文件为__makefile__。

7、不带缓存的文件I/O操作,主要用到的5个函数为open、close、read、write和 lseek 。

这里的不带缓存是指每一个函数都只调用系统中的一个函数(不理解这句话的含义)。

这些函数虽然不是ANSI C的组成部分,但是是POSIX 的组成部分。

lseek函数(随机访问文件)移动文件读/写指针

使用UNIX系统调用来读取文件容时,系统究竟是从文件的哪一个位置读取数据,完全由文件指针决定。例如:刚开始读取数据时,文件指针通常是指向文件的起始位置。

二、选择题

1、假设当前目录下有文件Makefile,下面是其容:

pr1: prog.o subr.o

gcc –o pr1 prog.o subr.o

prog.o: prog.c prog.h

gcc –c –l prog.o prog.c

subr.o: subr.c

gcc –c –o subr.o subr.c

clear:

rm –f pr1*.o

现在执行命令make clear,实际执行的命令是( A ):

A、rm –f pr1*.o

B、gcc –c –l prog.o prog.c

C、gcc –c –o subr.o subr.c

D、都执行

2、_ B 命令是在vi编辑器中执行存盘退出。

A ) q

B ) wq C) q! D) WQ

3、在vi编辑器中执行不存盘退出的命令为( A )

A、:q 编译结束,退出vi

B、:sq

C、:q! 不保存编辑过的文档,强制退出

D、:wq 保存文档并推出

4、vi编辑器中不包括下面哪种模式( A )

A、编辑模式

B、命令行模式

C、插入模式

D、底行模式

【解】:命令行模式——初始模式

插入模式

底行模式

5、下面哪种语言GCC编译器不支持( C )

A、C

B、Java

C、ASP

D、C++

ASP即Active Server Pages,是MicroSoft公司开发的服务器端脚本环境,可用来创建动态交互式网页并建立强大的web应用程序。当服务器收到对ASP文件的请求时,它会处理包含在用于构建发送给浏览器的HTML(Hyper Text Markup Language,超文本置标语言)网页文件中的服务器端脚本代码。除服务器端脚本代码外,ASP文件也可以包含文本、HTML (包括相关的客户端脚本)和com组件调用

6、GCC的正确编译流程为( A )

A、预处理-编译-汇编-

B、预处理-编译--汇编

C、预处理--编译-汇编

D、编译-预处理-汇编-

7、下面哪项关于GCC编译过程的说法是错误的( D )

A、编译阶段GCC要检查代码规性、是否有语法错误等,确定代码的实际要做的工作

B、汇编阶段是把编译阶段生成的.s文件转成目标文件

C、预处理阶段,GCC编译器将代码中包含的头文件编译进来

D、GCC在编译时默认使用静态库

8、下面哪些与GDB相关的说法是错误的( B )

A、GDB能调试可执行文件

B、GDB能调试源代码

C、GDB对编译过程有要求

D、GDB支持交叉调试

9、在GDB调试过程中,使用下面哪项命令设置断点,其中m代表行号 A

A、b m

B、c m

C、n m

D、s m

三、写程序

有3个进程,其中一个为父进程,其余两个是该父进程创建的子进程,其中一个子进程在暂停3s后异常退出,另一个子进程运行“cat my.txt”指令。父进程先用阻塞方式等待第二个进程的结束,然后用非阻塞方式等待第一个子进程的退出,待收集到两个子进程结束的消息后,父进程就返回。

Printf(“I am child1 and I execute ‘cat my.txt ’ \n”); If(execlp(“cat”,”my.txt”,NULL)<0);

四、读程序,写出程序运行结果

/* thread.c */

….

#define THREAD_NUMBER 3

#define REPEAT_NUMBER 3

#define DELAY_TIME_LEVELS 10.0 void * thrd_func(void *arg){ int thrd_num = (int)arg;

int delay_time = 0;

int count = 0;

printf("Thread %d is starting\n", thrd_num);

for (count = 0; count < REPEAT_NUMBER; count++)

{

delay_time = count + 1;

sleep(delay_time);

printf("\tThread %d: job %d delay = %d\n", thrd_num, count,

delay_time);

}

printf("Thread %d finished\n", thrd_num);

pthread_exit(NULL);

int main(void)

{

pthread_t thread[THREAD_NUMBER];

int no = 0, res;

void * thrd_ret;

srand(time(NULL));

for (no = 0; no < THREAD_NUMBER; no++)

{

res = pthread_create(&thread[no], NULL, thrd_func, (void*)no);

if (res != 0)

{

printf("Create thread %d failed\n", no);

exit(res);

}

}

printf("Create treads success\n Waiting for threads to finish...\n");

for (no = 0; no < THREAD_NUMBER; no++)

相关文档
最新文档