簡體   English   中英

鏈接共享庫時出現問題

[英]Problems when linking shared library

以下是我如何使用共享庫生成可執行文件的步驟。

  1. 我有三個文件:

    文件libhello.c

     /* hello.c - demonstrate library use. */ #include <stdio.h> void hello(void) { printf("Hello, library world./n"); } 

    文件libhello.h

     /* hello.h - demonstrate library use. */ void hello(void); 

    文件main.c

     /* main.c -- demonstrate direct use of the "hello" routine */ #include "hello.h" int main(void) { hello(); return 0; } 
  2. 我使用下面的命令來生成共享庫。

     gcc -g -Wall -fPIC -c hello.c -o hello.o gcc -shared -W,soname,-libhello.so.0 -o libhello.so.0.0.0 hello.o 
  3. 最后,我將庫路徑添加到LD_LIBRARY_PATH變量,並嘗試使用共享庫創建可執行文件。

     export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ln -s libhello.so.0.0.0 libhello.so.0 gcc -g -Wall -c main.c -o main.o -I. gcc -o main main.o -lhello -L. 

但是,在最后一步,有一個錯誤:找不到-lhello。 那么,我哪里錯了?

謝謝。

鏈接新程序時, gcc查找libhello.so 當搜索已鏈接程序的動態依賴項時,將使用libhello.so.0

gcc -o main main.o -lhello -L.gcc -o main main.o -lhello -L. 查找libhello.so./main查找libhello.so.0 這樣就可以為舊版程序提供庫的多個版本,同時可以精確地標識與已安裝標頭匹配的庫。

一個符號鏈接libhello.so > libhello.so.0.0.0應該可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM