cc 编译头文件

头文件信息:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值