如何将本地库与Autoconf链接

时间:2019-05-14 17:42:25

标签: c++ makefile autoconf

我尝试将位于项目文件夹中的库实现为使用autoconf(使用autoconf创建的Makefile)构建的项目。但是我总是收到错误消息,即找不到共享对象。

  

加载共享库时出错:libgraphblas.so.2:无法打开   共享对象文件:没有这样的文件或目录

手动链接文件也可以,在没有autoconf的另一个项目中也可以链接文件,但是我无法配置autoconf来自动创建文件。

这正在运行Makefile

INCDIR  = ../include
LIBDIR  = ../lib

EXE     = tricky

LDFLAGS = -lgraphblas -Wl,-rpath,$(LIBDIR) -L$(LIBDIR)

CC      = g++ -std=c++11
CFLAGS  = -Wall -I$(INCDIR)

$(EXE): main.o reporter.o 
    $(CC) $^ -o $@ $(LDFLAGS)

main.o: main.cc 
    $(CC) $(CFLAGS) -g -c $<

reporter.o: reporter.cc $(HEADERS)
    $(CC) $(CFLAGS) -g -c $<

clean:
    rm -f *.o *~ $(EXE)

在用于Autoconf的Makefile.am中,我试图复制Makefile

INCDIR  = ../resources/GraphBLAS/include
LIBDIR  = ../resources/GraphBLAS/lib

bin_PROGRAMS = programm

programm_SOURCES = ....

programm_CPPFLAGS = -I$(INCDIR)
programm_LDADD = -lgraphblas -L$(LIBDIR)
...

我得到以下链接命令:

g++ -std=c++11 -pthread -g -O2  -L/home/user/Documents/Thesis/sparqlSim-

dav/resources/GraphBLAS/lib -o programm {Sources.o} -lgraphblas -

L../resources/GraphBLAS/lib 

但是我需要这个(手动执行时起作用):

g++ -std=c++11 -pthread -g -O2  -L/home/user/Documents/Thesis/sparqlSim-

dav/resources/GraphBLAS/lib -o programm {Sources.o} -lgraphblas -

L../resources/GraphBLAS/lib -Wl,-rpath,$(LIBDIR)
  

"-Wl,-rpath,$(LIBDIR)"添加到LDFLAGS对我不起作用。

如何将"-Wl,-rpath,$(LIBDIR)"添加到autoconf创建的链接命令中?

0 个答案:

没有答案