#include"liba.h"
#include<stdio.h>
void funca()
{
printf("liba\n");
}
void funcc()
{
printf("liba c\n");
}
#include<stdio.h>
#include"libb.h"
void funcb()
{
printf("libb\n");
}
void funcc()
{
printf("libb c\n");
}
#include<stdio.h>
#include"liba/liba.h"
#include"libb/libb.h"
int main()
{
funcb();
//funca();
//funcc();
return 1;
}
输出 libb
#include<stdio.h>
#include"liba/liba.h"
#include"libb/libb.h"
int main()
{
//funcb();
funca();
funcc();
return 1;
}
输出 liba liba c
#include<stdio.h>
#include"liba/liba.h"
#include"libb/libb.h"
int main()
{
funcb();
funca();
//funcc();
return 1;
}
#include<stdio.h>
#include"liba/liba.h"
#include"libb/libb.h"
int main()
{
funcb();
funca();
//funcc();
return 1;
}
func重复定义
gcc -c liba.c & ar -r liba.a liba.o
gcc -c libb.c & ar -r libb.a libb.o
gcc -o a.out mian.c liba/liba.a libb/libb.a
总结:
1.main函数不包含头文件一样可以编译通过
2.因为先链接liba.a,a.out就把func确定在liba.a。所以同时链接 a和b文件中的符号,就会出现重复编译。
3.如果一个文件中有一个符号被引用,那么整个文件的符号都会被引用。加上-ffunction-sections -fdata-sections也没有用。
裁剪: