Ich versuche, eine Quelle mit einer .SO-Datei libfoo.so
zu kompilieren. Die einzige Sache in dieser Bibliothek ist eine Funktion, die nur eine Zahl zurückgibt (yeah, ich weiß, fortgeschrittene Sachen). Die Entsprechung der Header-Datei (ich hatte beide, aber ich soll nur die .so verwenden) heißt foo.h
und die Funktion heißt int foo()
.Wie kompiliere ich eine Datei mit einer gemeinsamen Bibliothek?
Meine Quelldatei ist main.c
:
#include <stdio.h>
#include "foo.h"
int main()
{
int x = foo();
printf("%d", x);
return 0;
}
, Nun, wenn ich versucht, die folgenden Befehle zu kompilieren:
gcc -Wall -fPIC -c main.c -o main.o
gcc -Wall -fPIC main.o -o main -lfoo -L.
Der erste Befehl schlägt fehl, die Objektdatei, die Ausgabe des folgenden Fehler zu erstellen :
fatal error: foo.h: No such file or directory
Ich benutze Ubuntu 16.04.
Ich habe auch versucht, den aktuellen Speicherort zu LD_LIBRARY_PATH zu exportieren, wie ich auf einige andere Antworten vorgeschlagen habe.
export LD_LBIRARY_PATH=$LD_LIBRARY_PATH:machine/Desktop/lib_test
Wo befindet sich 'foo.h' und was tun Sie, um Ihrem Compiler mitzuteilen, wo Sie es finden können? – Biffen