【问题标题】:How to compile ELSD on Ubuntu? link errors如何在 Ubuntu 上编译 ELSD?链接错误
【发布时间】:2014-12-06 04:35:47
【问题描述】:

我正在尝试在 Ubuntu 上编译它,但它没有链接,我不明白为什么。

http://ubee.enseeiht.fr/vision/ELSD/

home@home:~/projects/elsd_1.0$ make
cc -I/usr/local/include -L/usr/local/lib -o elsd elsd.c valid_curve.c process_curve.c process_line.c write_svg.c -llapack_LINUX -lblas_LINUX -llibf2c -lm
/usr/bin/ld: cannot find -llapack_LINUX
/usr/bin/ld: cannot find -lblas_LINUX
/usr/bin/ld: cannot find -llibf2c
collect2: error: ld returned 1 exit status
make: *** [elsd] Error 1
home@home:~/projects/elsd_1.0$ 

home@home:~/projects/elsd_1.0$ ls /usr/local/lib
blas_LINUX.a    libcblaswr.a  python2.7  site_ruby
lapack_LINUX.a  node_modules  python3.4  tmglib_LINUX.a
home@home:~/projects/elsd_1.0$ 

home@home:~/projects/elsd_1.0$ ls /usr/local/include
blaswrap.h  clapack.h  f2c.h
home@home:~/projects/elsd_1.0$ 

【问题讨论】:

  • 可以加-Wl,--verbose看看链接器在做什么?也许它可以提供更多关于出了什么问题的线索。
  • 感谢 SSC,成功了,我会回答问题的。

标签: c ubuntu compilation linker


【解决方案1】:

SSC 解决了我的邮件问题,告诉我添加 -Wl --verbose 以查看链接器在做什么,我的主要问题是 CLAPACK。

  1. 下载clapack.tgz解压到CLAPACK-3.2.1目录,进入该目录。

  2. mv make.inc.example make.inc

  3. 输入make

  4. 现在我在这个目录中有 blas_LINUX.a lapack_LINUX.a tmglib_LINUX.a。

  5. 将头文件从 INCLUDE 复制到 /usr/local/include,必须 chmod a+r .... 才能授予读取权限

  6. 在 elsd_1.0 中编辑 makefile 并将“-llapack_LINUX -lblas_LINUX”更改为“-llapack -lblas”

我想我在第 4 步中对 .a 文件做了一些处理,也许我将其移至 /usr/local/lib。

不管怎样,只要CLAPACK可以链接就可以了。

【讨论】:

    猜你喜欢
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多