一般出现这个问题说明,在编译时已经正确找到头文件mathh,但在链接时因为没有合适的编译选项来包括数学库。所以,这样做的结果是可以产生o的目标文件,但不会有可执行文件。
解决方法很简单,直接在编译选项中添加 -lm 即可。如下:
gcc testc -lm -o test
-lxx
xx是你的so文件名
其实使用方法和你使用数学库函数是一样的,源代码中添加
#include <mathh>,编译的时候,加上-lm参数。
注:linux下的so文件为共享库,相当于windows下的dll文件。
扩展资料:
linux下编写调用so文件实例
so是Linux(Unix)下的动态链接库 和dll类似
比如:
文件有: ac, bc, cc
gcc -c ac
gcc -c bc
gcc -c cc
gcc -shared libXXXso ao bo co
要使用的话也很简单 比如编译dc, 使用到libXXXso中的函数, libXXXso地址是MYPATH
gcc dc -o d -LMYPATH -lXXX
注意不是-llibXXX
testc文件和一个testh,这两个文件要生成libsotestso文件。然后我还有一个testsoc文件,在这个文件里面调用libsotestso中的函数。
编写的过程中,首先是编译so文件,我没有编写makefile文件,而是参考的2里面说的直接写的gcc命令。
因为so文件里面没有main函数,所以是不可执行的,所以编译的时候要加上-c,只生成目标文件。
以上就是关于在gsoap下用gcc编译服务端程序时报undefined reference to `soap_serve',请问这是什么原因全部的内容,包括:在gsoap下用gcc编译服务端程序时报undefined reference to `soap_serve',请问这是什么原因、请问我有一个.so文件,如何在Linux下编程使用呢、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)