2017-03-05 26 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ファイルとそのファイルからインターフェース定義がカレントディレクトリまたはinclude検索パス上のディレクトリに存在する必要があります持っている必要があります。

一部のシステムでは、ファイル名とパスは大文字と小文字が区別されます。

関連する問題