对于一个程序,我正在链接静态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文件。是否足以用makefile中的* .so文件替换* .a文件。如果不是这样做的正确方法。我试着简单地用makefile中的* .so文件替换* .a,但是当我这样做时,程序似乎使用了原始的glibc(而不是我修改过的glibc)。
答案 0 :(得分:6)
如果您不想使用标准库,则可能需要-nostdlib
标志。此外,如果要动态链接库,则需要告知链接器它们的位置。 -L/dir/containing -lc
。
如果您不想在执行时设置LD_LIBRARY_PATH
,则需要设置rpath
,-Wl,--rpath=/path/containing
。