gpt4 book ai didi

c - 如何在 gcc make 中链接静态库?

转载 作者:行者123 更新时间:2023-11-30 15:25:18 29 4
gpt4 key购买 nike

静态库可以在命令行中正常链接,但不能通过 makefile 链接。编译部分访问包含文件似乎没问题,但 makefile 中的 ld 过程一定是错误的。提前感谢您的帮助!

这是我的命令行:

gcc -o quadEq.exe quadEq.c -I../include -L../lib -lnowic

这是我的 Makefile:

CFLAGS = -Wall -g -c
INCLUDE = -I../include
LDFLAGS = -L../lib
LDLIBS = -lnowic
SOURCES = quadEq.c
OBJECTS = $(SOURCES:.c=.o)

EXE = quadEq

all: $(SOURCES) $(EXE)

$(EXE): $(OBJECTS)
gcc $(OBJECTS) $(LDFLAGS) $(LDLIBS) -o $@

.c.o:
gcc $(CFLAGS) $(INCLUDE) $< -o $@

这是我运行 Makefile 和命令行的屏幕截图。

enter image description here

最佳答案

静态库关心链接它们的顺序。如果libA.a依赖于libB.a,那么你必须执行-lB -lA

如果libA.a符号依赖于libB.a,而libB.a又依赖于libA.a符号,则必须循环链接: -lB -lA -lB。我见过一些循环达到大约 3 或 4 个循环,但根据我的经验,通常 2 个就足够了。

这与动态库链接不同,动态库链接不仅不关心链接它们的顺序,而且不需要链接依赖库,因为 .so 指定了它们。

关于c - 如何在 gcc make 中链接静态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993856/

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