簡體   English   中英

如何使用共享庫編譯文件?

[英]How to compile a file using a shared library?

我正在嘗試編譯給定.so文件libfoo.so的源。 該庫中唯一的東西是一個僅返回數字的函數(是的,我知道,高級的東西)。 等效的頭文件(我提供了兩者,但只能使用.so)被命名為foo.h ,函數被命名為int foo()

我的源文件是main.c

#include <stdio.h>

#include "foo.h"

int main()
{
    int x = foo();

    printf("%d", x);

    return 0;   
}

現在,當嘗試編譯時,我有以下命令:

gcc -Wall -fPIC -c main.c -o main.o

gcc -Wall -fPIC main.o -o main -lfoo -L.

第一條命令無法創建目標文件,輸出以下錯誤:

fatal error: foo.h: No such file or directory

我正在使用Ubuntu 16.04。

我還嘗試將當前位置導出到LD_LIBRARY_PATH,正如我在其他一些答案中所看到的那樣。

export LD_LBIRARY_PATH=$LD_LIBRARY_PATH:machine/Desktop/lib_test

您需要具有.h文件中的接口定義,並且該文件必須位於當前目錄或包含搜索路徑中的目錄中。

請注意,在某些系統上,文件名和路徑取決於大小寫。

暫無
暫無

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

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