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
'foo.h'はどこにありますか、コンパイラにどこにそれを見つけようとしていますか? – Biffen