Создайте файл .so из файла .c с помощью командной строки gcc

Я пытаюсь создать приветственный мир для динамических библиотек Linux (файлы .so). Поэтому у меня есть файл hello.c:

#include <stdio.h>
void hello()
{
    printf("Hello world!\n");
}

Как создать файл .so, который экспортирует hello(), используя gcc из командной строки?

Ответ 1

Чтобы создать общую библиотеку, вам необходимо сначала скомпилировать ваш код C с флагом -fPIC (независимый по позиции кода).

gcc -c -fPIC hello.c -o hello.o

Это приведет к созданию объектного файла (.o), теперь вы его берете и создаете .so файл:

gcc hello.o -shared -o libhello.so

EDIT: Предложения по комментариям:

Вы можете использовать

gcc -shared -o libhello.so -fPIC hello.c

сделать это за один шаг. - Джонатан Леффлер

Я также предлагаю добавить -Wall для получения всех предупреждений и -g для получения отладочной информации к вашим командам gcc. - Базиль Старинкевич