将静态lib(potracelib)与另一个lib链接起来,在Makefile.am中写什么?

时间:2015-07-25 08:11:21

标签: c makefile autotools automake

我需要链接libpotrace并将其编译成libgerbv。我应该在Makefile.am中写什么?我尝试了各种各样的东西,比如LDADD,LIBDIR,LDFLAGS等,但我没有成功。

我的结构如何:

  • gerbv / gerbv-test - >来自git,master brach的文件
  • gerbv / libs / potrace / potrace-test - > potrace - >来自sourceforge.com的文件,最新版本

我使用Debian Jessie,我可以单独编译这两个程序,我都没想到,我怎样才能将potrace链接到gerbv并编译它。头文件(.h)已正确包含,但我没有成功链接.so或.a / la lib。即使在/ usr / local / lib或/ usr / lib中安装了potrace也没有成功。

任何人都可以指导我吗?如果您可以下载这两个程序,编译它没有错误然后将您输入的内容写入gerbv / src / makefile.Am,那将是最好的。


已更新
我下载了干净的版本,只做这个修改:

  • /root/NBP/gerbv/gerbv-test/src/Makefile.am

加入

libgerbv_la_LIBADD = libpotrace.la # src/Makefile.am:84: error: use 'libgerbv_la_LIBADD', not 'libgerbv_la_LDADD'
libgerbv_la_LIBDIR = /root/NBP/gerbv/libs/potrace/potrace-old/src/.libs
#libgerbv_la_DEPENDENCIES = libpotrace.la


  • /root/NBP/gerbv/gerbv-test/src/exportimage.c

在顶部添加

#include "../../libs/potrace/potrace-test/src/potracelib.h"

添加到void exportimage_render_to_surface_and_destroy(...)中,如果共享库已正确链接,这将测试。 exportimage.c是libgerbv的一部分,我需要包含libpotrace。

char *v = potrace_version();


进行此修改后,我通过以下方式构建它:

  • libpotrace
root:~/NBP/gerbv/libs/potrace/potrace-test# autoreconf && ./configure --with-libpotrace && make

运行没有问题......

  • gerbv检察/ libgerbv
root:~/NBP/gerbv/gerbv-test# autoreconf && ./configure && make

结果如下:

...
make[3]: Entering directory '/root/NBP/gerbv/gerbv-test/src'
make[3]: *** No rule to make target 'libpotrace.la', needed by 'libgerbv.la'.  Stop.
make[3]: Leaving directory '/root/NBP/gerbv/gerbv-test/src'
Makefile:498: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/root/NBP/gerbv/gerbv-test/src'
Makefile:472: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/root/NBP/gerbv/gerbv-test'
Makefile:401: recipe for target 'all' failed
make: *** [all] Error 2

1 个答案:

答案 0 :(得分:0)

解决了这个Makefile.am补充:

libgerbv_la_LIBADD = ../../libs/potrace/potrace/src/libpotrace.la
libgerbv_la_DEPENDENCIES  = ../../libs/potrace/potrace/src/libpotrace.la