如何在Makefile.am中引入第三方so库?

如何在Makefile.am中引入第三方so库?,第1张

如果只有so,没有a文件和h头文件,那么你需要知道so开放出来的函数。 比如so提供的函数有open 。close。那么:

1 在你的源程序中需要先使用dlopen函数打开这个so库。

2 在源程序中使用dlsym函数拿到开放出来的函数(open close)。拿到函数指针后,就可以调用so里面的函数了。

dlopen dlsym是linux的库函数。

你是通过源代码编译过来的,你可以把所有源码生成静态库文件(非so动态库),然后使用库的头文件和你的程序进行编译,编译完后连接静态库文件就可以运行了。

目录文件

hello.c

hello.h

生成动态链接库 libhello.so

main.c 内容

使用动态链接库生成执行文件 main

显示 main 的dependency,看到并没有找到 libhello.so 库 (libhello.so =>not found)

设置 LD_LIBRARY_PATH ,添加当前目录,这样就能找到 libhello.so 库了

再次查看 main 的dependency:

执行 main

其实你做得基本上是OK的

在main.o:main.cpp

这一行最后需要加上依赖的库文件,如

main.o:main.cpp libToolClasses.so

再试试,有问题再找我


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11505751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存