C 如何在makefile中包含*.so文件
对于一个程序,我链接了静态glibc库(我修改了它)。我的makefile看起来像这样C 如何在makefile中包含*.so文件,c,linux,gcc,x86-64,glibc,C,Linux,Gcc,X86 64,Glibc,对于一个程序,我链接了静态glibc库(我修改了它)。我的makefile看起来像这样 CXX = g++ CXXFILES = main.c CXXFLAGS = -g -o prog -D_GNU_SOURCE LIBS = ../../nptl/libpthread.a ../../libc.a -lpthread all: $(CXX) $(CXXFILES) $(LIBS) $(CXXFLAGS) 但是,我现在希望使用动态共享对象*.so文件,而不是使用静态的*.a文件。
CXX = g++
CXXFILES = main.c
CXXFLAGS = -g -o prog -D_GNU_SOURCE
LIBS = ../../nptl/libpthread.a ../../libc.a -lpthread
all:
$(CXX) $(CXXFILES) $(LIBS) $(CXXFLAGS)
但是,我现在希望使用动态共享对象*.so文件,而不是使用静态的*.a文件。用makefile中的*.so文件替换*.a文件是否足够。如果不是,正确的方法是什么。我试图简单地用makefile中的*.so文件替换*.a,但当我这样做时,程序似乎使用了原始的glibc(而不是我修改的glibc) 如果不想使用标准库,可能需要
-nostlib
标志。此外,如果要动态链接库,需要告诉链接器它们在哪里<代码>-L/dir/包含-lc
如果执行时不想设置
LD\u库路径
,则需要设置rpath
,-Wl,--rpath=/PATH/containing
,难道不需要像正常编译一样,然后在运行之前设置LD\u预加载
?不,我不想使用LD_预加载!看一看。它应该可以帮助您解决问题。@metallicprait:在这种情况下,您应该编辑您的问题,以便它详细说明您的所有约束条件。请阅读指出--rpath
作用的要点。这就是为什么我下载的这么多项目在其构建中需要LD\u LIBRARY\u PATH
。