Создайте исполняемый файл и совместно использованную библиотеку с одним make-файлом

Используя make-файлы плохо мне знакомо. Мои первые тесты с самым простым подходом работали очень хорошо до сих пор. Но теперь я застрял, пишущий make-файл, который создает исполняемый файл и общую библиотеку. Как я сказал, я плохо знаком с make-файлами. Вот мой простой подход:

exe.a: main.c func.c
    gcc main.c func.c -o exe.a
lib.so: func.c
    gcc func.c -o lib.so -fPIC -shared

Когда make-файл будет выполняться, только исполняемый файл будет скомпилирован. Даже возможно создать два объекта с одним make-файлом? Что лучший подход должен создать эти файлы?

4
задан 24 November 2018 в 04:25

1 ответ

По умолчанию make создаст только первую цель в Make-файле, который является exe.a в Вашем случае. Можно или сказать make создать другую цель:

make lib.so

или обе цели:

make lib.so exe.a

или (предпочтенный) представляют новую первую цель, которую обычно называют all:

all: exe.a lib.so

exe.a: main.c func.c
    gcc main.c func.c -o exe.a
lib.so: func.c
    gcc func.c -o lib.so -fPIC -shared

Теперь простое make создаст (псевдо-) цель all который в свою очередь зависит от exe.a и lib.so, таким образом, они создаются сначала. Обратите внимание, что Вам нельзя было называть файл all в Вашем каталоге в этом случае, потому что затем make запутывается.

5
ответ дан 1 December 2019 в 09:29

Другие вопросы по тегам:

Похожие вопросы: