linux之gcc命令
在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序。Gcc指令的一般格式为:
Gcc [选项] 要编译的文件 [选项] [目标文件]。其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out
看一下经典入门程序"Hello World!"
# vi hello.c ,编辑如下:
#include <stdlib.h>
#include <stdio.h>
void main(void)
{
printf("hello world!\r\n");
}
用gcc编译成执行程序。#gcc hello.c,该命令将hello.c直接生成最终二进制可执行程序a.out。./a.out就可以执行。
这条命令隐含执行了(1)预处理、(2)汇编、(3)编译、(4)链接,形成最终的二进制可执行程序。现在我们就用GCC的命令选项来逐个剖析GCC过程。
1),预处理(Pre-processing)。在该阶段,编译器将C源代码中的包含的头文件如stdio.h编译进来,用户可以使用gcc的选项”-E”进行查看。用法:#gcc -E hello.c -o hello.i,作用:将hello.c预处理输出hello.i文件。通过vi hello.i可以看到预处理过程信息。
2),编译阶段(Compiling)。在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。用户可以使用”-S”选项来进行查看,生成汇编代码。
用法:[root]# gcc –S hello.i –o hello.s
3),汇编阶段(Assembling)。汇编阶段是把编译阶段生成的”.s”文件转成二进制目标代码。用法:[root]# gcc –c hello.s –o hello.o
4),链接阶段(Link)。用法:[root]# gcc hello.o –o hello.exe,作用:将编译输出文件hello.o链接成最终可执行文件hello.exe。
在这个程序中并没有定义”printf”的函数实现,且在预编译中包含进的”stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实现”printf”函数的呢?最后的答案是:系统把这些函数实现都被做到名为libc.so.6的库文件中去了。可以用ldd命令查看动态库加载情况:[root]# ldd hello.exe。
函数库一般分为静态库和动态库两种。静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。
Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。
Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十 ......
复制文件和目录命令 cp
格式: cp [参数] 源文件或目录 目标文件或目录
说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
常用的参数:
- a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
- d 拷贝时保留链接。
- f 删除已经存在的目标 ......
之前看了一些关于linux操作系统的教程,比较喜欢将这些东西记录在本子上,现在再将这些东西贴到博客上,和大家交流一下。很多linux高手说到,想要学好linux必须对其目录有个透彻的理解。以下是我总结的一些东西:
与Windows一样,在Linux中也是通过目录来组织文件的。但不同的是,在Linux下只有一个根目录,而不象Win ......
多线程程序设计的概念早在六十年代就被提出,但直到八十年代中期,Unix系统中才引入多线程机制,如今,由于自身的许多优点,多线程编程已经得到了广泛的应用。本文我们将介绍在Linux下编写多进程和多线程程序的一些初步知识。
------------------------------------------------------------------------ ......