用C语言编译多个文件

时间:2020-10-29 05:04:06

标签: c compilation

我有两个C文件,想在一个文件中编译它。一个文件是通过make命令编译的,另一个文件是Mysql数据库连接文件,它是由另一个命令编译的。

所以基本上我想将此数据库连接包含在我的主代码文件中。

mysql连接文件编译命令: -> gcc -o mysql_test $(mysql_config --cflags)mysql_test.c $(mysql_config --libs)

主代码编译命令: ->制作

make文件如下,

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>&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文件中。谢谢。

0 个答案:

没有答案