我需要链接libpotrace并编译成libgerbv。我应该在Makefile.am中写什么?我尝试了LDADD、LIBDIR、LDFLAGS等多种方法,但都没有成功。
我的结构是什么样子的:
gerbv/gerbv测试->来自git、master brach的文件
gerbv/libs/potrace/potrace test->potrace->sourceforge.com的文件,最新版本
我使用DebianJessie,我可以分别编译这两个程序,但我都没有弄清楚,我如何将potrace链接到gerbv并编译它。头文件(.h)包含正确,但我没有成功链接.so或.a/la lib。甚至在/usr/local/lib或/usr/lib中安装的potrace也没有成功。
有人能给我指路吗?最好的方法是下载这两个程序,编译它时不要出错,然后将所输入的内容写入gerbv/src/makefile.Am。
更新
我下载了clean releases,只做了以下修改:
/根目录/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
/根目录/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();
在做了这些修改之后,我通过:
利波特拉斯
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
最佳答案
使用此Makefile.am添加解决:
libgerbv_la_LIBADD = ../../libs/potrace/potrace/src/libpotrace.la
libgerbv_la_DEPENDENCIES = ../../libs/potrace/potrace/src/libpotrace.la