4

对于一个程序,我正在链接静态 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)

但是,我现在不想使用静态 *.a 文件,而是使用动态共享对象 *.so 文件。用makefile中的*.so文件替换*.a文件是否足够?如果不是这样做的正确方法是什么。我试图简单地将 *.a 替换为 makefile 中的 *.so 文件,但是当我这样做时,该程序似乎使用原始 glibc(而不是我修改过的)。

4

1 回答 1

7

如果您不想使用标准库,则可能需要该-nostdlib标志。另外,如果你想动态链接库,你需要告诉链接器它们在哪里。 -L/dir/containing -lc.

如果您不想LD_LIBRARY_PATH在执行时设置 a ,则需要设置rpath, -Wl,--rpath=/path/containing

于 2012-05-21T16:39:38.870 回答