--2017-01-04上次测试-I -L 有起作用。今天意外不行,所以就只能放在同一个目录下面或者通过软连接(ln -s  source destination)或硬连接(ln source destination)

mv libmy.so  inh/

      rm -rf symbolic_name删除

通过find / -name libmy.so  可以找到实时的位置./mydll/inh/ilbmy.so

但是通过locate libmy.so 找到的是 旧位置/mydll/libmy.so具体情况尚不清楚(虽然看到看到说locate是非实时位置)

==============================================================

-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批处理脚本

filename: th.sh

#!/bin/bash
gcc add.c dec.c axb.c -fPIC -shared -o libmy.so

$ chmod +x th.sh
$ ./th.sh

​方法学习javascript:void(0)​​

***********************************

//使用该动态库 #include<> 同目录下必须有-I.

compile:  gcc fur.c -I. -L. -lmy  -o XJY

run1:          ./XJY

run2:           XJY

fur.c

#include<stdio.h>
#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;
}

 

***********************************

//使用该动态库 #include""同目录下可以无-I.

 

compile: gcc fur.c -L.  -lmy  -o XJY

run1:         ./XJY  

run2:        XJY

fur.c

#include<stdio.h>
#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;
}

 

***********************************

//使用该动态库 无引用头文件 直接链接不报错(分开编译链接会 warning)

compile: gcc fur.c   -L.  -lmy  -o XJY

run1:         ./XJY  

run2:        XJY

#include<stdio.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;
}