Я пытаюсь создать общую библиотеку в C со следующей структурой файла.
В func1.h
#ifndef INCLUDE_FUNC1_H_
#define INCLUDE_FUNC1_H_
void function1();
#endif
В func1.c
#include "func1.h"
void function1() {
//do function 1
}
В func2.h
#ifndef INCLUDE_FUNC2_H_
#define INCLUDE_FUNC2_H_
void function2();
#endif
В func2.c
#include "func2.h"
void function2() {
//do function 2
}
Теперь, чтобы избежать необходимости включать несколько заголовочных файлов, я хочу общий заголовочный файл commonheader.h
, который включает другие заголовочные файлы.
#ifndef INCLUDE_COMMONHEADER_H_
#define INCLUDE_COMMONHEADER_H_
#include "func1.h"
#include "func2.h"
#endif
Затем я скомпилировал их в общую библиотеку.
gcc -c -fPIC -o func1.o func1.c
gcc -c -fPIC -o func2.o func2.c
gcc -shared -o libcommonheader.so *.o
Теперь я пытаюсь использовать созданную общую библиотеку. test.c
выглядит так,
#include "commonheader.h"
int main () {
function1();
}
Я пытался скомпилировать это,
gcc -L. -I. -Wall -o test test.c -lcommonheader
Однако он возвращает с ошибкой неопределенную ссылку на `function1 '.
Что я здесь не так делаю?