Скомпилировать несколько файлов на языке C

#c #compilation

#c #Сборник

Вопрос:

У меня есть два файла C, и я хочу скомпилировать их в один файл. Один файл компилируется с помощью команды make, а другой файл представляет собой файл подключения к базе данных Mysql, который компилируется другой командой.

Итак, в основном я хочу включить это подключение к базе данных в мой основной файл кода.

Команда компиляции файла подключения к Mysql: -> gcc -o mysql_test $(mysql_config —cflags) mysql_test.c $ (mysql_config —библиотеки)

Основная команда компиляции кода: -> создать

Создайте файл, как показано ниже,

 SHELL := /bin/bash
CC = gcc
CFLAGS = -Wall -Werror
SRCDIR = ./src/
BINDIR = ./bin/
OBJDIR = ./so/
SAMPLEDIR = ./ejemplo/
SYSOBJDIR = /usr/lib/
SYSINCLUDE = /usr/include/
ASTSOUNDDIR = /var/lib/asterisk/sounds/
ASTAGIBINDIR = /var/lib/asterisk/agi-bin/

all:    $(OBJDIR)libagicapi.o $(OBJDIR)libagicapiutils.o 
    $(CC) $(CFLAGS) -fPIC -c -o $(OBJDIR)libagicapi.o $(SRCDIR)libagicapi.c
    $(CC) $(CFLAGS) -fPIC -c -o $(OBJDIR)libagicapiutils.o $(SRCDIR)libagicapiutils.c
    $(CC) $(CFLAGS) -fPIC -shared -o $(OBJDIR)libagicapi.so $(OBJDIR)libagicapi.o $(OBJDIR)libagicapiutils.o

clean:  
    $(RM) $(OBJDIR)*
    $(RM) $(BINDIR)*

install: $(OBJDIR)libagicapi.so
    install -m 0744 $(OBJDIR)libagicapi.so $(SYSOBJDIR)libagicapi.so
    install -m 0744 $(SRCDIR)libagicapi.h $(SYSINCLUDE)libagicapi.h

sample: $(OBJDIR)libagicapi.so
    $(CC) $(CFLAGS) -o $(BINDIR)libagicapisample $(SAMPLEDIR)ejemplo.c -lagicapi
    mkdir -p $(ASTSOUNDDIR)/es/libagicapisample/ $(ASTSOUNDDIR)en/libagicapisample/
    @echo "*------------------------------------*"
    @echo "*   Cree la siguiente Extension en   *"
    @echo "*        su Plan de marcado          *"
    @echo "*                                    *"
    @echo "*exten => num,1,AGI(libagicapisample)*"
    @echo "*------------------------------------*"
    if id -u asterisk >/dev/null 2>amp;1; then
        install -m 0744 -o asterisk -g asterisk $(BINDIR)libagicapisample $(ASTAGIBINDIR)libagicapisample;
        install -m 0744 -o asterisk -g asterisk ./sound/es/menu.wav $(ASTSOUNDDIR)es/libagicapisample/menu.wav;
        install -m 0744 -o asterisk -g asterisk ./sound/en/menu.wav $(ASTSOUNDDIR)en/libagicapisample/menu.wav;
    else
        install -m 0744 $(BINDIR)libagicapisample $(ASTAGIBINDIR)libagicapisample;
        install -m 0744 ./sound/es/menu.wav $(ASTSOUNDDIR)es/libagicapisample/menu.wav;
        install -m 0744 ./sound/en/menu.wav $(ASTSOUNDDIR)en/libagicapisample/menu.wav;
    fi

$(OBJDIR)libagicapi.o: $(SRCDIR)libagicapi.c $(SRCDIR)libagicapiutils.c
$(OBJDIR)libagicapiutils.o: $(SRCDIR)libagicapi.c $(SRCDIR)libagicapiutils.c
$(OBJDIR)libagicapi.so: $(SRCDIR)libagicapi.c $(SRCDIR)libagicapiutils.c
  

Итак, я хочу включить команду подключения Mysql в этот основной файл make, пожалуйста, помогите мне в этом. Как я могу поместить команду компиляции mysql в указанный выше файл make. Спасибо.

Комментарии:

1. И как теперь ваш makefile??

2. Ссылка на создание файла приведена ниже: (libagicapisample это основной код, и в нем я хочу добавить соединение с mysql) sourceforge.net/projects/agi-c-api в этом репозитории make файл есть

3. Нет, это не так, ваш вопрос должен быть автономным. Пожалуйста, сделайте упрощенный пример используемого вами Makefile.

4. хорошо, я обновил содержимое makefile, пожалуйста, проверьте

5. Команды в разделе all: target находятся в неправильном месте . Они должны находиться в соответствующих объектных файлах.