在Ubuntu上装CLPACK请看这篇博客
https://www.douban.com/note/668955631/
但是我发现了一点问题,该博客在编译的时候编译了这一步
”2.在CLAPACK目录下,make tmglib,会生成CLAPACK/tmglib_LINUX.a;”
但是在后面的操作中,作者没有把这个tmglib_LINUX.a复制到/usr/local/lib里面,
因此我擅自多加了一步操作,把tmglib_LINUX.a改名成libtmglib.a,并复制到/usr/local/lib里面。

但是我自己的笔记本装上双系统之后,跑不出ELSDc(这个代码使用了CLAPACK)的代码。
ELSDc的Makefile的内容是
LIB= -I/usr/local/lib
CFLAGS= -I/usr/local/include
OPT= -O3
elsdc: main.c pgm.c svg.c elsdc.c gauss.c curve_grow.c polygon.c ring.c ellipse_fit.c rectangle.c iterator.c image.c lapack_wrapper.c misc.c
gcc $(OPT) $(LIB) -o elsdc main.c pgm.c svg.c elsdc.c gauss.c curve_grow.c polygon.c ring.c ellipse_fit.c rectangle.c iterator.c image.c lapack_wrapper.c misc.c -llapack -lm
clean:
rm elsdc
使用make编译的时候,总是报下面一堆错误
//usr/local/lib/liblapack.a(dsyev.o):在函数‘dsyev_’中:
dsyev.c:(.text+0x50e):对‘f2c_dscal’未定义的引用
//usr/local/lib/liblapack.a(dsytrd.o):在函数‘dsytrd_’中:
dsytrd.c:(.text+0x3b7):对‘f2c_dsyr2k’未定义的引用
dsytrd.c:(.text+0x601):对‘f2c_dsyr2k’未定义的引用
//usr/local/lib/liblapack.a(dsteqr.o):在函数‘dsteqr_’中:
dsteqr.c:(.text+0x7eb):对‘d_sign’未定义的引用
dsteqr.c:(.text+0xd31):对‘f2c_dswap’未定义的引用
dsteqr.c:(.text+0x11ec):对‘d_sign’未定义的引用
//usr/local/lib/liblapack.a(dsterf.o):在函数‘dsterf_’中:
dsterf.c:(.text+0x6c5):对‘d_sign’未定义的引用
dsterf.c:(.text+0xba9):对‘d_sign’未定义的引用
//usr/local/lib/liblapack.a(ilaenv.o):在函数‘ilaenv_’中:
ilaenv.c:(.text+0x6d):对‘s_cmp’未定义的引用
ilaenv.c:(.text+0xa1):对‘s_cmp’未定义的引用
ilaenv.c:(.text+0xc3):对‘s_cmp’未定义的引用
ilaenv.c:(.text+0x1d1):对‘s_copy’未定义的引用
ilaenv.c:(.text+0x2ab):对‘s_copy’未定义的引用
ilaenv.c:(.text+0x2c4):对‘s_copy’未定义的引用
ilaenv.c:(.text+0x2db):对‘s_copy’未定义的引用
ilaenv.c:(.text+0x30b):对‘s_cmp’未定义的引用
ilaenv.c:(.text+0x32d):对‘s_cmp’未定义的引用
ilaenv.c:(.text+0x391):对‘s_cmp’未定义的引用
ilaenv.c:(.text+0x3b3):对‘s_cmp’未定义的引用
ilaenv.c:(.text+0x3d5):对‘s_cmp’未定义的引用
//usr/local/lib/liblapack.a(ilaenv.o):ilaenv.c:(.text+0x3f7): 跟着更多未定义的参考到 s_cmp
//usr/local/lib/liblapack.a(iparmq.o):在函数‘iparmq_’中:
iparmq.c:(.text+0xcb):对‘i_nint’未定义的引用
//usr/local/lib/liblapack.a(dlatrd.o):在函数‘dlatrd_’中:
dlatrd.c:(.text+0x18e):对‘f2c_dsymv’未定义的引用
dlatrd.c:(.text+0x1cc):对‘f2c_dscal’未定义的引用
dlatrd.c:(.text+0x20e):对‘f2c_ddot’未定义的引用
dlatrd.c:(.text+0x24c):对‘f2c_daxpy’未定义的引用
dlatrd.c:(.text+0x2e7):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0x351):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0x449):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0x4c3):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0x5a8):对‘f2c_dsymv’未定义的引用
dlatrd.c:(.text+0x625):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0x69d):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0x71b):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0x795):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0x7dc):对‘f2c_dscal’未定义的引用
dlatrd.c:(.text+0x836):对‘f2c_ddot’未定义的引用
dlatrd.c:(.text+0x889):对‘f2c_daxpy’未定义的引用
dlatrd.c:(.text+0x910):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0x985):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0xa00):对‘f2c_dgemv’未定义的引用
dlatrd.c:(.text+0xa6f):对‘f2c_dgemv’未定义的引用
//usr/local/lib/liblapack.a(dsytd2.o):在函数‘dsytd2_’中:
dsytd2.c:(.text+0x1ef):对‘f2c_dsymv’未定义的引用
dsytd2.c:(.text+0x234):对‘f2c_ddot’未定义的引用
dsytd2.c:(.text+0x272):对‘f2c_daxpy’未定义的引用
dsytd2.c:(.text+0x2b4):对‘f2c_dsyr2’未定义的引用
dsytd2.c:(.text+0x474):对‘f2c_dsymv’未定义的引用
dsytd2.c:(.text+0x4c6):对‘f2c_ddot’未定义的引用
dsytd2.c:(.text+0x511):对‘f2c_daxpy’未定义的引用
dsytd2.c:(.text+0x567):对‘f2c_dsyr2’未定义的引用
//usr/local/lib/liblapack.a(dlartg.o):在函数‘dlartg_’中:
dlartg.c:(.text+0xaa):对‘pow_di’未定义的引用
//usr/local/lib/liblapack.a(dlarfg.o):在函数‘dlarfg_’中:
dlarfg.c:(.text+0x4b):对‘f2c_dnrm2’未定义的引用
dlarfg.c:(.text+0xac):对‘d_sign’未定义的引用
dlarfg.c:(.text+0x16b):对‘f2c_dscal’未定义的引用
dlarfg.c:(.text+0x1cd):对‘f2c_dnrm2’未定义的引用
dlarfg.c:(.text+0x1f3):对‘d_sign’未定义的引用
dlarfg.c:(.text+0x24f):对‘f2c_dscal’未定义的引用
dlarfg.c:(.text+0x2cc):对‘f2c_dscal’未定义的引用
//usr/local/lib/liblapack.a(dlarfb.o):在函数‘dlarfb_’中:
dlarfb.c:(.text+0x2b9):对‘f2c_dcopy’未定义的引用
dlarfb.c:(.text+0x32d):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x38e):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x3f8):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x60f):对‘f2c_dcopy’未定义的引用
dlarfb.c:(.text+0x675):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x6d1):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x720):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x9e7):对‘f2c_dcopy’未定义的引用
dlarfb.c:(.text+0xa3f):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0xaa0):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0xaf1):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0xc8f):对‘f2c_dcopy’未定义的引用
dlarfb.c:(.text+0xcf1):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0xd4f):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0xda0):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x107f):对‘f2c_dcopy’未定义的引用
dlarfb.c:(.text+0x10f8):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x1156):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x11c0):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x14c6):对‘f2c_dcopy’未定义的引用
dlarfb.c:(.text+0x1545):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x15a1):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x160a):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x18e1):对‘f2c_dcopy’未定义的引用
dlarfb.c:(.text+0x195c):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x19bb):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x1a24):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x1b8f):对‘f2c_dcopy’未定义的引用
dlarfb.c:(.text+0x1bed):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x1c4c):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x1c9b):对‘f2c_dtrmm’未定义的引用
dlarfb.c:(.text+0x1d89):对‘f2c_dgemm’未定义的引用
dlarfb.c:(.text+0x1dfe):对‘f2c_dgemm’未定义的引用
dlarfb.c:(.text+0x1e54):对‘f2c_dgemm’未定义的引用
dlarfb.c:(.text+0x1eb9):对‘f2c_dgemm’未定义的引用
dlarfb.c:(.text+0x2016):对‘f2c_dgemm’未定义的引用
//usr/local/lib/liblapack.a(dlarfb.o):dlarfb.c:(.text+0x208b): 跟着更多未定义的参考到 f2c_dgemm
//usr/local/lib/liblapack.a(dlarft.o):在函数‘dlarft_’中:
dlarft.c:(.text+0x4d2):对‘f2c_dgemv’未定义的引用
dlarft.c:(.text+0x546):对‘f2c_dtrmv’未定义的引用
dlarft.c:(.text+0x6a1):对‘f2c_dgemv’未定义的引用
dlarft.c:(.text+0x83b):对‘f2c_dgemv’未定义的引用
dlarft.c:(.text+0x8e9):对‘f2c_dtrmv’未定义的引用
dlarft.c:(.text+0xaae):对‘f2c_dgemv’未定义的引用
//usr/local/lib/liblapack.a(dorg2l.o):在函数‘dorg2l_’中:
dorg2l.c:(.text+0x318):对‘f2c_dscal’未定义的引用
//usr/local/lib/liblapack.a(dorg2r.o):在函数‘dorg2r_’中:
dorg2r.c:(.text+0x3b8):对‘f2c_dscal’未定义的引用
//usr/local/lib/liblapack.a(dlarf.o):在函数‘dlarf_’中:
dlarf.c:(.text+0x19a):对‘f2c_dgemv’未定义的引用
dlarf.c:(.text+0x1db):对‘f2c_dger’未定义的引用
dlarf.c:(.text+0x257):对‘f2c_dgemv’未定义的引用
dlarf.c:(.text+0x298):对‘f2c_dger’未定义的引用
//usr/local/lib/liblapack.a(dlamch.o):在函数‘dlamch_’中:
dlamch.c:(.text+0xc2):对‘pow_di’未定义的引用
dlamch.c:(.text+0x110):对‘pow_di’未定义的引用
//usr/local/lib/liblapack.a(dlamch.o):在函数‘dlamc2_’中:
dlamch.c:(.text+0x918):对‘pow_di’未定义的引用
dlamch.c:(.text+0xff2):对‘s_wsfe’未定义的引用
dlamch.c:(.text+0x1006):对‘do_fio’未定义的引用
dlamch.c:(.text+0x100b):对‘e_wsfe’未定义的引用
collect2: error: ld returned 1 exit status
Makefile:30: recipe for target ‘elsdc’ failed
make: *** [elsdc] Error 1

经分析发现,报的错误中都是一堆“未定义的引用”,然后考虑到装CLPACK的时候,一共有
3个包需要移动到/usr/local/lib中.,但是代码只是写了“-llapack,-lm”(表示引用这两个lib包),其他包没有被用到,所以最后做了尝试将gcc那一行代码加上“-lblas -lf2c -ltmglib”,把剩余的包也做引用。所以代码改成
“elsdc: main.c pgm.c svg.c elsdc.c gauss.c curve_grow.c polygon.c ring.c ellipse_fit.c rectangle.c iterator.c image.c lapack_wrapper.c misc.c
gcc $(OPT) $(LIB) -o elsdc main.c pgm.c svg.c elsdc.c gauss.c curve_grow.c polygon.c ring.c ellipse_fit.c rectangle.c iterator.c image.c lapack_wrapper.c misc.c -llapack -lblas -lf2c -ltmglib -lm”

然后在命令行里面打“make”,成功编译

在Ubuntu上装CLPACK,并跑出ELSDc的代码相关推荐

  1. VMware虚拟机ubuntu上装显卡驱动后无法进入图形界面

    本人在虚拟机VMware Workstation(ubuntu 16.04)上装需要CUDA(GPU加速)的开源工程的依赖项...CUDA-8-0后,重启电脑一直停留在用户登陆界面,无发进入操作界面. ...

  2. 64位Ubuntu上装QQ

    目前,QQ for Linux提供的包都是32位的,在64位UBUNTU系统中无法安装. 1.欲在64位系统安装32位软件,首先要安装支持32位软件的包:ia32-libs ia32-libs-gtk ...

  3. Ubuntu上装KVM:安装、初次使用

    KVM 是 linux 内核自带的虚拟机系统, 使用它,你的机器就可以变成几台机了 试用过程如下: 环境: Ubuntu 14.04 64bit 1,  KVM需要CPU硬件支持虚拟化,所以首先要确认 ...

  4. ubuntu上装texlive

    先把基本的texlive装好 之前提前就把微软字体复制到/usr/share/fonts下了. sudo apt-get install perl-tk(为了用tlmgr) 记得如果用texlive ...

  5. Python在Linux实现代码特效,关于在Linux系统上的Ubuntu上基于python3、shell语言代码的实现...

    首先打开执行终端,然后进入路径(执行文件的目录): 1.python3语言代码的实现步骤: 1>python3 xxx.py(一步实现) 2.shell语言代码的实现步骤: 1>获取属主的 ...

  6. VSCode使用总结之——Ubuntu下设置鼠标后退键实现代码回跳

    VSCode中代码跳转可以直接按住Ctrl键,然后鼠标点击就可以实现,但是想要回退回去呢?默认是需要按住Ctrl+Alt+-三个键才能实现,这就给我实际使用带来很多不便. 我的鼠标是罗技的M585,侧 ...

  7. Ubuntu vscode 配置c/c++环境 ---- 静态代码检查

    我曾一度因为vscode中c语言的静态代码检查问题而困扰,想想还是太懒了,不愿意折腾,今天搞一下. 首先在ubuntu中装vscode,,, 然后装clang apt install llvm -y ...

  8. ubuntu环境下使用cat命令合并代码

    将test2.py追加到test1.py 实现方式: cat test2.py >> test1.py

  9. Ubuntu安装GoogleTest框架并测试C++代码

    GoogleTest框架测试C++代码 开发环境:Ubuntu16.04 判断是否安装cmake 输入cmake -v,如果没有安装,输入sudo apt-get install cmake 打开终端 ...

最新文章

  1. 上传文件到服务器指定目录,文件名相同自动替换PHP实现代码
  2. 深度学习中用于张量重塑的 MLP 和 Transformer 之间的差异图解
  3. 【LaTeX 语法】字母表示 ( 大写、小写、异体 希腊字母 | 粗体字母 | 花体字母 )
  4. 二叉树的序列化与反序列化
  5. c#多线程总结(纯干货)
  6. 在 Windows 8 中支持传感器
  7. mysql的记录操作的日志文件_MySql 的操作日志 历史记录
  8. chrono0.10插件离线版_梁宝川:这11条anki插件的使用常识分享给你
  9. CentOS 7下sshd防暴力破解及fail2ban的使用方法
  10. GD32F103读写内部FLASH
  11. 关于Vue SSR不可不知的问题
  12. PyTorch学习基础知识二
  13. 如何拟合幂率分布的幂率
  14. reg51 reg52区别
  15. 3D游戏建模:女性角色制作
  16. ListNode的理解
  17. onvif 修改摄像头参数
  18. STM32F103C8T6基础开发教程(HAL库)—LED灯1S周期闪烁
  19. 《深入理解计算机系统》读书笔记
  20. 通俗易懂地了解 Bloom filter

热门文章

  1. 软件项目管理_IT项目管理_吴清锋
  2. 丛林生存法则——狼与鹿
  3. DataQL之语法-词法记号
  4. 大专生拿到阿里 offer,却担心背调不过,网友:985 在你面前黯淡无光
  5. 南京信息工程大学计算机好调剂吗,2017年南京信息工程大学硕士研究生调剂信息...
  6. python文件操作学习心得
  7. 获取Excel中Undo按钮的项目
  8. 微信网页分享给朋友和朋友圈
  9. 启动阿里低代码平台报错 error in ./node_modules/@alifd/next/es/grid/main.scss
  10. 【每日一题】打卡 3