2017-03-05 75 views
0

我想給編譯一個.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 
+1

凡'foo.h'定位和你在做什麼要告訴你的編譯器在哪裏找呢? – Biffen

回答

0

你需要有從.h文件中的接口定義和文件必須在當前目錄或包含搜索路徑上的目錄。

注意,在某些系統文件名和路徑依賴的情況下。