gpt4 book ai didi

c - 在我的 makefile 中设置我的 LD_LIBRARY_PATH 有问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:18 25 4
gpt4 key购买 nike

我试图在我的 makefile 中设置我的 LD_LIBRARY_PATH,这样我就不必在执行“make all”后运行命令来设置它。但是,尽管命令已执行,但当我尝试使用 ./driver 时,我得到了

./driver: error while loading shared libraries: libparser.so: cannot open shared object file: No such file or directory.

当我在收到该错误(在 makefile 之外)后执行命令时,它已修复。您对我做错了什么有任何想法吗?这是我当前的 Makefile:

# OPTIONAL: Set these variables as required.
CFLAGS := -g -Wall -std=c99
LDFLAGS :=
LDLIBS :=

all: static-driver driver setenvp

# OPTIONAL: COMPLETE THIS TARGET
# This target produces an object file for making libraries.
parser.o: parser.c
cc -c -fPIC $(CFLAGS) parser.c

# COMPLETE THIS TARGET
# This target produces the dynamic library.
lib/libparser.so: parser.o
gcc -shared -o libparser.so parser.o

# COMPLETE THIS TARGET
# This target produces the executable using the dynamic library
driver: driver.c lib/libparser.so
gcc driver.c -I$(PWD) -L$(PWD)/lib -o driver -lparser

# This target produces the executable using static library
static-driver: driver.c lib/test.a
$(CC) $(CFLAGS) driver.c -I$(PWD) lib/test.a -o static-driver

setenvp:
export LD_LIBRARY_PATH=$(PWD)/lib

.PHONY: clean
clean:
rm -fv static-driver driver
rm -fv lib/libparser.so
rm -fv *.o *.txt *.bin
rm -fv *~ \#*\# *.swp

最佳答案

由于每一行都是在一个新的shell环境中执行的,所以你必须在命令之前为要继承的任何内容添加前缀。那是你可能想要定义

MY_CC := export LD_LIBRARY_PATH=$(PWD)/lib; gcc

然后让您的目标由

target.o: target.c
$(MY_CC) ...

关于c - 在我的 makefile 中设置我的 LD_LIBRARY_PATH 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47062848/

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