头文件信息:
List.h
#ifndef _List_h
#define _List_h
#include <stdlib.h>
#include <stdio.h>
#endif
typedef struct Node
{
struct Node *next;
int value;
} Node;
int ins_Node(Node ** cn,int value);
Node * InitNode(int value);
头文件的实现:
List.c
#include "List.h"
int ins_Node(Node ** cn,int value)
{
Node *curr,*news;
while((curr=*cn)!=NULL&&curr->value<value)
{
cn=&curr->next;
}
news=malloc(sizeof(Node));
if(news==NULL)
return 0;
news->value=value;
news->next=curr;
*cn=news;
}
Node * InitNode(int value)
{
Node * InNode;
InNode=malloc(sizeof(Node));
if(InNode==NULL)
return ;
else
{
InNode->value=value;
InNode->next=NULL;
}
return InNode;
}
将头文件编译成目标文件即.o文件
cc -c List.c -o list.o //生成list.o文件
主函数tmList.c
#include"List.h"
void main(void)
{
Node *rNode,*curr;
rNode=InitNode(2);
ins_Node(&rNode,10);
ins_Node(&rNode,5);
curr=rNode;
while(curr!=NULL)
{
printf("%d ",curr->value);
curr=curr->next;
}
}
cc -o tmlist tmlist.c list.o //生成可执行文件tmlist.exe
也可以把头文件这些放到动态库或者静态库中。
静态链接库:
生成目标文件:先把头文件编译成目标文件:cc -c list.c //此处将生成obj类型的文件即:list.o
创建静态库:把obj文件放进静态库中:ar cqs liblist.a list.o //此处可以把多个obj文件放到liblist.a文件中,只需要把要加入的obj文件列出来即可。
链接静态库生成可执行文件:cc tmlist.c -static -L. -llist -o tmlist
动态链接库:
编译成动态链接库:
cc list.c -shared -o liblist.so //此处可以把一些相关的头文件都编译到liblist.so中,只需要把要添加的文件放到list.c的前面或者后面。
链接动态链接库生成可执行文件:
cc tmlist.c -L. -llist -o list
参考:http://www.360doc.com/content/10/0619/14/1795182_33985297.shtml
http://ajava.org/article-1874-1.html
http://www.cnblogs.com/yuboyue/archive/2011/07/29/2121376.html
http://doc.chinaunix.net/linux/201002/392402.shtml