linux產生(載入)動態庫靜態庫和載入樣本方法_linux shell

來源:互聯網
上載者:User

動態庫的產生:

1、/*mysum.c*/

複製代碼 代碼如下:

#include <stdio.h>
#include "src.h"


int sum(int a,int b)
{
return (a+b);
}


 

2、/*mysum.h*/

複製代碼 代碼如下:

#ifndef __SRC_H__
#define __SRC_H__

int sum(int a,int b);

#endif


 

3、/*main.c*/

複製代碼 代碼如下:

#include <stdio.h>

extern int sum(int a,int b);

/*

#include <stdio.h>

#include "mysum.h"

*/

int main()
{
int a,b,c=0;
printf("input a and b:\n");
scanf("%d %d",&a,&b);
c = sum(a,b);
printf("c = %d\n",c);
return 0;
}


 

4、產生動態庫

複製代碼 代碼如下:

gcc -c -fPIC mysum.c mysum.h //產生mysum.o檔案

gcc -shared -fPIC -o libmysum.so mysum.o //產生動態庫檔案,預設的命名方式為lib+名稱.so


 

5、動態庫靜態載入

複製代碼 代碼如下:

gcc -o main main.c -L. -lmysum -Wall

gcc -o main main.c -lmysum -Wall

6、執行 ./main時會報告錯誤,提示無法載入libmysum.so共用庫。

7、處理方法有三:

方法一:

將動態庫拷貝到 /lib或 /usr/lib中去

如:sudo cp libmysum.so /lib

方法二:

改變環境變數:

LD_LIBRARY_PATH=$PWD export LD_LIBRARY_PATH

方法三:

在編譯時間指定共用庫的路徑:

gcc -o main1 -Wl,-rpath,.-L. -louyang main.o

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.