求教mkl库的gcc编译问题

问题描述

求教mkl库的gcc编译问题

debian上安装了intel Parallel Studio XE 2015,主要是为了使用mkl库。

能顺利用icc file.c -mkl,但我想用gcc,却总是不能成功调用mkl的库

我的XE 2015的目录在/home/usr/inter_C

先,gcc -I /home/usr/intel_C/mkl/include/ main.o -o main,
一切正常我就理解为,编译没问题

再,gcc main.o -o main -L /home/usr/intel_C/lib/intel64/ -L /home/usr/intel_C/mkl/lib/intel64/ -lmkl_core -lmkl_intel_thread -lpthread

就提示很多错,其中一个就是,

/home/usr/intel_C/mkl/lib/intel64//libmkl_core.so: undefined reference to `fabs'

其余的都类似的错误

我对gcc的链接不是特别清楚,在网上找了一些mkl库的编译链接的例子,想照虎画猫,但是。。不行额。。

想求教懂的人,帮我看看如何解决这个问题,先谢谢了!!

解决方案

难道用gcc+mkl真的非常不靠谱吗。。

解决方案二:

都没有人气,算了。。

解决方案三:

有没有试过加-lm?

时间: 2024-09-30 13:59:13

求教mkl库的gcc编译问题的相关文章

GCC 编译使用动态链接库和静态链接库的方法

1 库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有别于静态库,动态库的链接是在程序执行的时候被链接的.所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用. 2 静态库和动态库的比较 链接静态库其实从某种意义上来说也是一种粘贴复制,只不过它操作的对象是目标代码而不是源码而已.因为静态库被链接后库就直接嵌入可执行文件中了,这样就带来了两个问题. 首先就是系统空间被浪费了.

GCC 编译使用动态链接库和静态链接库

1 库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有别于静态库,动态库的链接是在程序执行的时候被链接的.所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用.(TODO:链接动态库时链接阶段到底做了什么) 2 静态库和动态库的比较 链接静态库其实从某种意义上来说也是一种粘贴复制,只不过它操作的对象是目标代码而不是源码而已.因为静态库被链接后库

linux-怎样把别人给的库和自己的代码用gcc编译成可执行程序?

问题描述 怎样把别人给的库和自己的代码用gcc编译成可执行程序? 别人给的文件是: libzmq.so.3 libz.so.1 libboost_thread.so.1.46.0 libboost_date_time.so.1.46.0 问题: 1.这些是共享库吗? 2.请给一个gcc命令,把main.c 连同上述文件编译成可执行文件. 谢谢! 解决方案 so文件时共享库,把他们一起link进 你可以gcc -o main.c libzmq.so.3...

GCC 编译使用动态链接库和静态链接库的方法_C 语言

1 库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有别于静态库,动态库的链接是在程序执行的时候被链接的.所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用.(TODO:链接动态库时链接阶段到底做了什么) 2 静态库和动态库的比较 链接静态库其实从某种意义上来说也是一种粘贴复制,只不过它操作的对象是目标代码而不是源码而已.因为静态库被链接后库

linux使用gcc编译c语言共享库步骤_C 语言

对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例如一个数据库服务器的接口,就像MySQL. 大部分大型的软件项目都会包含若干组件,其中一些你发现可以用在其他项目中,又或者你仅仅出于组织目的将不同组件分离出来.当你有一套可复用的并且逻辑清晰的函数时,将其构建为一个库会十分有用,这样你就不将这些源代码拷贝到你的源代码中,而且每次都要再次编译它们.除此之外,你还可以保证你的程序各模块隔离,这

gcc编译出现了undefined reference to `exp'

问题描述 gcc编译出现了undefined reference to `exp' 在Ubuntu下编译word.cgcc -lm -pthread word.c -o word还是出现了undefined reference to `exp',后来有gcc -pthread word.c -o word /usr/lib/libm.a则提示没有/usr/lib/libm.a这个文件, 有没有有经验的大侠有解决办法? 解决方案 首先确定有libm.so,虽然一般是肯定有的,locate libm

和菜鸟一起学c之gcc编译过程及其常用编译选项【转】

转自:http://blog.csdn.net/eastmoon502136/article/details/8162626 版权声明:本文为博主东月之神原创文章,未经博主允许不得转载.        上篇文章,知道了,C代码编译后存放在内存中的位置,那么C代码的整个编译过程又是怎样的呢?一条命令gcc hello.c就可以编译成可执行程序a.out,然后./a.out之后就可以执行hello.c这个程序的代码了.下面的文章分析的不错,就整理了下. hello.c:     [html] vie

OS X下gcc编译报错,Xcode带的gcc

问题描述 OS X下gcc编译报错,Xcode带的gcc 错误是 dpc2sim.a file was built for archive which is not the architecture being linked (x86_64) 用Data Prefetch Championship给的framework写prefetch的程序http://comparch-conf.gatech.edu/dpc2/想先跑跑人家给的example,可是编译的时候就报错了.我用的是OS X,gcc版

gcc vc++6.0-同样代码VC6.0结果正确,GCC编译运行结果不正确,原因是什么呢?谢谢!

问题描述 同样代码VC6.0结果正确,GCC编译运行结果不正确,原因是什么呢?谢谢! #include int main() { char deno[1000]={''},num,i=0,remain=0; scanf("%s %d",deno,&num); //获取被除数.除数 if(!num) return (-1); while(deno[i]!='') deno[i++]-='0'; //转换成数字 deno[i]='#'; //结束标志 i=0; while(deno