"libtool: link: `xxxxxxxxxxx.la' is not a vali...

The root-cause of the error is a change in your operating system, either due to a package update (i.e. apt-get update) or because you re-installed the entire system. An "older" installation of the respective library package included the '.la' file mentioned in the error message. The "newer" installation of the binary package does not include the ".la" file anymore. This is by itself NOT an issue. The issue is that *some* file (possible multiple) on your system include a reference to the ".la" file and tell libtool to inspect the ".la" file for linker information. So libtool tries to access it and fails.

The file that does refer to the ".la" file can have been generated either because:

  • You compiled some software on your system that linked against the library while the ".la" file was still present. Common candidates include GNU libmicrohttpd (for libgcrypt.la) and a previous compile-run for GNUnet itself. This will result in references to the ".la" file both in the installed directory (i.e. $PREFIX/lib) as well as in the original source tree (relevant if you compile frequently from SVN HEAD).
  • Your distribution is from an "unstable" series and contains a mixed bag of packages, for example an old version of GNUtls (compiled against an version of libgcrypt that had a libgcrypt.la by the maintainer) and a newer version of libgcrypt that no longer includes libgcrypt.la. This is a rare case, but if you sometimes edit your apt sources list, you might want to consider this possibility as well...

Finally, here is the solution. First, delete *all* ".la" files in/usr/lib/,/usr/local/lib/, other "lib/" directories from your "/etc/ld.so.conf" and whatever directory you use for the "--prefix" option when compiling/installing GNUnet (you should have those in your "LD_LIBRARY_PATH" environment variable). As your distribution has phased out the use of ".la" files, this should be safe, in fact, unless you fall under the second category there should be no ".la" files installed by your distribution packages anymore anyway.


Second, run "make distclean" in the directory with the GNUnet sources. It is likely that references to the ".la" file have been captured within the source tree already.


Finally, re-run "./configure" before re-running "make" / "make install".


Note that if you missed a ".la" file with a reference to the missing ".la" file, you'll have to re-do the second and the last step.

Finally, I should mention that linking the ".la" file to the ".so" file can also work but is an UGLY hack and in no way a clean solution to the problem.

转载于:https://my.oschina.net/luyuhx/blog/112093

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值