【发布时间】:2021-08-06 08:22:46
【问题描述】:
我想直接在我的 Makefile 中导出一个共享库。因此,我浏览了 stackoverflow 并按照此页面上列出的步骤操作:How to export directly in a Makefile?。但它们不适用于我的 Makefile。
如果我使用终端手动导出它(LD_LIBRARY_PATH),它可以工作。
我想知道直接使用makefile导出LD_LIBRARY_PATH的正确方法是什么。
如果我不在终端中手动导出,我会收到此错误:./myProgram.exe: error while loading shared libraries: libcustom.so: cannot open shared object file: No such file or directory
其他信息:
如果我首先使用终端导出,然后创建并运行 .exe
这是我的Makefile:
CXXFLAGS = -Wall -std=c++11
LD = $(CXX)
RM = rm
PLATFORM = LINUX64
LIB = /my_path/lib/
SO = $(LIB)/libCustom.so
L1_SO = $(LIB)/libCustom1.so
INC = /my_path/inc
L1_INC = /my_path/L1/C/inc
export: export LD_LIBRARY_PATH=/smthing/here:$(LD_LIBRARY_PATH)
EXE = myProgram.exe
SRCS = myProgram.cpp
OBJS = ${SRCS:.cpp=.o}
.SUFFIXES: .o .cpp
.cpp.o :
$(CXX) $(CXXFLAGS) -c $< -I$(INC) -I$(L1_INC)
all: $(EXE)
$(EXE): $(OBJS)
@export MY_ENV_VAR=/smthing/here; \
$(LD) -o $@ $(OBJS) -L$(LIB) -lCustom -lCustom1 -ldl -lrt -lz
@echo make $(EXE) successful...
clean:
rm -fr *Log $(EXE) *.o
【问题讨论】:
-
你打算通过 Makefile 运行你的程序吗??
-
是的,我是通过makefile执行的
-
您使用
make'构建程序,然后运行它。它们不在同一范围内。你在 Makefile 中导出的 var 只在里面有效 -
你能告诉我如何在程序运行的同一范围内导出它吗?
标签: c++ bash makefile shared-libraries