#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 находятся в неправильном месте . Они должны находиться в соответствующих объектных файлах.