gpt4 book ai didi

c - 如何在 makefile 中链接 C 库

转载 作者:行者123 更新时间:2023-11-30 20:22:08 26 4
gpt4 key购买 nike

我正在处理一个已经存在的 C 代码,现在我已经使用 C 中的 sqlite 创建了一个数据库。该程序运行良好。但现在我需要为此创建一个 makefile。我使用编译程序

gcc cliDemo.c -l sqlite3

但是现在由于我使用的是 makefile,所以我需要将其放入 makefile 中。我尝试了几件事但没有任何效果。

EXEC      = telescope 
CC = gcc
CFLAGS = -Wall -fno-strict-aliasing -g -I/usr/include/libxml2 -DHAVE_CONFIG_H
LDFLAGS = -lxml2 -lpthread -lm -lz


AR = @AR@
ARFLAGS = @ARFLAGS@
RANLIB = @RANLIB@

INSTALL_MODE= -m 0755

# Include some boilerplate Gnu makefile definitions.
prefix = /usr/local

exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
libdir = ${exec_prefix}/lib
infodir = ${prefix}/share/info
includedir = ${prefix}/include
datadir = ${prefix}/share
docdir = $(datadir)/doc/telescope
localedir = $(datadir)/locale

mandir = ${prefix}/share/man
manpfx = man
man1ext = .1
man1dir = $(mandir)/$(manpfx)1man3ext = .3man3dir = $(mandir)/$(manpfx)3

htmldir = ${docdir}

SRCDIR = ./src
BINDIR = ./bin
OBJECTDIR = ./Obj
MAINOBJS = $(OBJECTDIR)/telescope.o
MAINEXEC = $(BINDIR)/telescope

OBJECTS1 = $(MAINOBJS)

all: $(EXEC)

$(EXEC): $(OBJECTS1)
$(CC) $(CFLAGS) $(OBJECTS1) $(LDFLAGS) -o $(MAINEXEC)

$(OBJECTDIR)/telescope.o: $(SRCDIR)/telescope.c
$(CC) $(CFLAGS) -c $(SRCDIR)/telescope.c -o $(OBJECTDIR)/telescope.o


clean:
rm -f $(EXEC) $(MAINEXEC) $(OBJECTS1)


# build tests
build-tests: .build-tests-post

.build-tests-pre:
# Add your pre 'build-tests' code here...

.build-tests-post: .build-tests-impl
# Add your post 'build-tests' code here...

# run tests
test: .test-post

.test-pre:
# Add your pre 'test' code here...

.test-post: .test-impl
# Add your post 'test' code here...

这是 makefile 中的代码。我不明白如何在这里链接 sqlite3。

最佳答案

如果您要链接动态 (*.so) 库,您应该更改原始 make 文件。特别是,您应该将 LDFLAGS 行更改为如下所示:

LDFLAGS = -lxml2 -lpthread -lm -lz -lsqlite3

关于c - 如何在 makefile 中链接 C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40685646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com