--2017-01-04上次测试-I -L 有起作用。今天意外不行,所以就只能放在同一个目录下面或者通过软连接(ln -s source destination)或硬连接(ln source destination)
mv libmy.so inh/
http://www.cnblogs.com/wancy86/p/linux_inode.html 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
方法学习http://www.cnblogs.com/huangxinzhen/p/4047051.html
***********************************
//使用该动态库 #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;
}