您好,登錄后才能下訂單哦!
1, 編譯,使用-shared和-fpic 生成動態(tài)鏈接庫
庫源碼:test.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static void printline(int len)
{
int i;
for(i = 0;i<len;i++)
{
printf("=");
}
printf("\n");
}
void print(char * s)
{
int len = 0;
int i = 0;
if(!s || *s == '\0')
{
return ;
}
len = strlen(s);
printline(len);
printf("%s\n",s);
printline(len);
}
頭文件:test.h
#ifndef __TEST_H__
#define __TEST_H__
void print(char * s);
#endif
編譯庫文件:
gcc test.c -shared -fpic -o libtest.so
2.編譯測試代碼
測試代碼:main.c
#include "test.h"
int main()
{
char teststr[] = "hello world";
print(teststr);
return 0;
}
編譯測試代碼
gcc main.c -L./ -ltest -o main
3.運行
當(dāng)運行時,發(fā)現(xiàn)找不到庫文件
./main: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory
這個是linux庫文件搜索路徑的問題,有兩個解決方式
root@GFD:~/workspace/so_test# export LD_LIBRARY_PATH=./
root@GFD:~/workspace/so_test# ./main
===========
hello world
===========
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。