make distcheck
我在我正在创作的项目中运行时遇到了名义上的链接错误:
$ uname -a
Linux vbox 3.2.0-26-generic #41-Ubuntu SMP Thu Jun 14 17:49:24 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/issue
Ubuntu 12.04 LTS \n \l
$ libtool --version
libtool (GNU libtool) 2.4.2
Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ g++ --version
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ automake --version
automake (GNU automake) 1.11.3
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Tom Tromey <tromey@redhat.com>
and Alexandre Duret-Lutz <adl@gnu.org>.
如您所见,它使用 g++ 4.6 和 libtool 2.4.2 在 Ubuntu 12.04 上出现。在使用 g++ 4.2.1 和 libtool 2.4.2(均通过自制软件安装)的 OS X 10.7.4 上,不会出现错误。它也没有出现在make check
.
这是相关的片段Makefile.am
:
# -- myprog --
#
lib_LTLIBRARIES += myproj/myprog/libmyprog.la
myproj_myprog_libmyprog_la_SOURCES = # ...
myproj_myprog_libmyprog_la_LIBADD = myproj/mylib/libmylib.la
sbin_PROGRAMS += myproj/myprog/myprog
myproj_myprog_myprog_SOURCES = myproj/myprog/main.cc
myproj_myprog_myprog_LDADD = myproj/myprog/libmyprog.la
# -- mylib --
#
lib_LTLIBRARIES += myprog/mylib/libmylib.la
myproj_mylib_libmylib_la_SOURCES = # ...
和错误本身:
/usr/bin/ld: cannot find -lmylib
collect2: ld returned 1 exit status
libtool: install: error: relink `myproj/myprog/libmyprog.la' with the above command before installing it
我该如何解决?