第一章 入门

开发系统导引

应用程序

/usr/bin:系统为正常使用提供的程序

/usr/local/bin,/opt:系统管理员存放的应用程序

头文件

C语言的头文件几乎都放在/usr/include

依赖特定Linux版本的头文件放在/usr/include/sys和/usr/include/linux

库文件

标准库文件存在/lib和/usr/lib

库文件的名字以lib开头,随后的部分指明什么库。文件名最后以.开始,然后给出库文件的类型:

.a表示静态函数库

.so表示动态函数库

通过给出完整库文件路径名或-l标志告诉编译器要搜索的库文件

gcc -o fred fred.c /usr/lib/libm.a

gcc -o fred fred.c -lm

-lm表示标准库(/usr/lib)中名为libm.a的函数库。如果是动态库,则自动选择动态库。

静态库

举例:

为两个函数fred和bill创建各自的源文件

//fred.c

#include<stdio.h>
void fred(int arg)
{
  printf("fred:we passed %d\n",arg);
}

 

//bill.c

#include<stdio.h>
void bill(char *arg)
{
  printf("bill:we passed %s\n",arg);
}

编译这两个文件

gcc -c fred.c bill.c

分别产生fred.o和bill.o文件

创建一个头文件lib.h,头文件声明库文件中的函数

//lib.h

void bill(char *);
void fred(int);

创建主程序program.c,他包含库的头文件并且调用库文件中的一个函数

//program.c

#include<stdlib.h>
#include "lib.h"

int main()
{
  bill("Hello world");
  exit(0);
}

创建目标文件(program.o)

gcc -c program.c

先为编译器显式指定目标文件,然后要求编译器编译你的文件并与先前编译好的目标文件链接,产生可执行文件program。

gcc -o program program.o bill.o

执行文件

./program
bill:we passed Hello world

 创建库文件

将bill.o fred.o归并到一个文档中,使用ar命令

ar crv libfoo.a bill.o fred.o
  a - bill.o
  a - fred.o

调用函数库

gcc -o program program.o libfoo.a

注意:gcc -o  filename filename.c表示编译并链接,生成filename可执行文件,gcc -c filename.c表示将filename.c进行编译,但不链接。生成filename.o文件

posted @ 2016-10-10 16:04  且听风吟-wuchao  阅读(157)  评论(0编辑  收藏  举报