Linux下測試使用lib.so
--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
***********************************
//使用該動態庫 #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;
}