程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> gcc shared object,gccshared

gcc shared object,gccshared

編輯:關於C語言

gcc shared object,gccshared


介紹一個生成動態鏈接庫*.so的例子: 首先新建1個頭文件test.h:

#include <stdio.h>
void first();
void second();
void third();

然後新建3個源文件first.c/second.c/third.c:

first.c:

#include "test.h"
void first() {
    printf("this is first.\n");
}

 

second.c:

#include "test.h"
void second() {
    printf("this is second.\n");
}

 

third.c:

#include "test.h"
void third() {
    printf("this is third.\n");
}

 

然後,生成動態鏈接庫libtest.so: gcc first.c second.c third.c -fPIC -shared -o libtest.so 
說明:1、-fPIC意思是代碼位置獨立便於程序共享。2、-shared意思是生成動態鏈接庫

接著新建一個調用動態鏈接庫的源代碼test.c:

#include "test.h"
void main(){
    first();
    second();
    third();
}

跟著生成可執行文件: gcc test.c -L. -ltest -o test 
說明:-L.表示鏈接庫在當前目錄;-ltest表示根據隱含規則查找到libtest.so的鏈接庫

此時執行./test會得到如下結果:

this is first.
this is second.
this is third.

如果沒有得到這個結果,而是提示你“./test: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory ”,那麼就在/etc/ld.so.conf.d目錄下新建一個test.conf配置文件,並在該文件中寫入你的動態鏈接庫的訪問路徑比如/usr/local/demo/lib,具體根據自己的情況而定。建好之後鍵入sudo ldconfig使配置生效。

over.

ps: 
對於找不到鏈接庫的情況,還可以通過創建軟鏈接的方式,比如ln -s /your_folder/*so /usr/lib

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved