-I. #大写i 头文件目录/位置[.h] #include<...> 或者 #include"..." 若在同一目录下,<>必须有此项,""可以无此项 eg: -I./inc -I.
-L. #动态库lib.so目录/位置[.dll] eg: -L./lib -L.
-l #小写的L用到的动态库 eg:生成的文件名为libname.so 使用 -lname
***********************************
源文件
myso.h
#ifndef _MYSO_H
#define _MYSO_H
extern int add(int,int);
extern int dec(int ,int);
extern int axb(int,int);
#endif
add.c
#include"myso.h"
int add(int x,int y)
{
return (x+y);
}
dec.c
#include"myso.h"
int dec(int x,int y)
{
return (x-y);
}
axb.c
#include"myso.h"
int axb(int x,int y)
{
return (x*y);
}
shell批处理脚本
#!/bin/bash
gcc add.c dec.c axb.c -fPIC -shared -o libmy.so
***********************************
使用改动态库
compile: gcc fur.c -I. -L. -lmy -o XJY
run1: ./XJY
run2: XJY
fur.c
#include
#include
int main()
{
printf("1+2=%d 2-3=%d 5*6=%d\n",add(1,2),dec(2,3),axb(5,6));
return 0;
}
***********************************
compile: gcc fur.c -L. -lmy -o XJY
run1: ./XJY
run2: XJY
fur.c
#include
#include"myso.h"
int main()
{
printf("1+2=%d 2-3=%d 5*6=%d\n",add(1,2),dec(2,3),axb(5,6));
return 0;
}
***********************************
compile: gcc fur.c -L. -lmy -o XJY
run1: ./XJY
run2: XJY
#include
int main()
{
printf("1+2=%d 2-3=%d 5*6=%d\n",add(1,2),dec(2,3),axb(5,6));
return 0;
}