gpt4 book ai didi

linux - 带有静态和共享库的 Makefile

转载 作者:行者123 更新时间:2023-12-04 19:29:56 25 4
gpt4 key购买 nike

我从创建 Makefile 开始。我编写了简单的 Makefile,它创建了两个库,静态和动态并用于编译可执行文件。程序运行的文件位于单独的文件夹中:src 中的 *.c,include 中的 *.h,
lib 中的 *.a 和 *.so 以及 bin 中的可执行文件。其余的都在 makefile 文件夹中。我的 Makefile 创建所有文件但找不到文件。我在 gcc 中使用 VPATH 和 -L。但那是行不通的。我正在开发 Ubuntu 20.04 LTS。感谢所有帮助。

vpath %.c src

vpath %.h include

vpath %.a lib

vpath %.so lib

%.o: %.c
gcc -c $<

%: %.o
gcc -o ./bin/$@ $^ -L./lib -I./bin

libj%.a: %j.o
ar rs ./lib/$@ $^

lib%r.so: p%.o
gcc -shared -o ./lib/$@ $^ -L./lib


prog: prog.o libjp.a libgr.so

prog.o: prog.c libgr.h libjp.h

libjp.a: pj.o pp.o

pj.o: pj.c

pp.o: pp.c

libgr.so: pg.o pr.o

pg.o: pg.c

pr.o: pr.c

最佳答案

我不明白您所说的“在哪个文件夹中”是什么意思,您必须在运行程序之前完成您的外壳程序。
所以,如果你运行这个:

$ make

$ ./bin/prog
你得到一个错误,你应该使用这个:
$ make

$ export LD_LIBRARY_PATH=$(pwd)/lib

$ ./bin/prog
不要把 LD_LIBRARY_PATH 的设置放在正如我在上面的评论中提到的那样,在makefile中。

关于linux - 带有静态和共享库的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67572761/

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