linux下 动态链接库的制作
来源:互联网 发布:java两个时间相减 编辑:程序博客网 时间:2024/05/20 18:51
linux下动态链接库的制作:
so可以供多个进程使用,不同进程调用同一个so文件,
so文件源程序不需要main函数,有也不会被执行。
下面通过一个简单例子,来学习.so文件的制作跟使用。
/* * max.h * */ /*条件编译*/ #ifndef MAX_H_ #define MAX_H_ #ifdef __cpluscplus extern "C"{ #endif int max(int a,int b);
#endif /* MAX_H_ */
/* * max.cpp * */
#include "max.h"int max(int a,int b) { return a>b?a:b; }
链接库的制作:
编译c程序:gcc -shared -fpic XXX.c -o XXX.so编译c++程序:g++ -shared -fpic XXX.cpp -o XXX.so
/* * main.cpp * */ #include <stdio.h> #include "max.h" int main(void) { printf("call max function results is: %d\n",max(20,12)); return 0; } /* 使用libmax.so库 * gcc -o main main.c -L. -lmax * *-L.: 在当前路径下寻找.so文件 *-lmax: 要链接这个libmax.so文件 * * */
编译main.cpp
g++ -o main main.cpp -lmax
此时需要注意的是应该把libmax.so 放到/usr/lib目录中否则会出现错误error while loading shared libraries: libmax.so: cannot open shared object file: No such file or directory
./main 结果出现20说明动态链接库制作正确。
如果要是在QT中调用,需要加上头文件和.so文件的绝对路径
INCLUDEPATH + =" "
LIBS += ""
$ g++ hello.cpp -fPIC -shared -o libhello.so
$ g++ main.cpp -L. -lhello -o main
交叉编译步骤一致:
(1) $arm-linux-g++ hello.cpp -fPIC -shared -o libarmhello.so
(2) $arm-linux-g++ main.cpp -L. -larmhello -o armhello
交叉编译的时候出现错误:fatal error:opencv2/imgproc/imgproc.hpp:no such file or directory
解决方法:把交叉编译好的opencv下的include中的opencv2拷贝到交叉编译器中的include下
我的交叉编译好的opencv和opencv2路径是在:/opt/arm/include
把/opt/arm/include 文件下的opencv2 复制到/opt/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/include即可。
- linux下 动态链接库的制作
- linux 下动态链接库的制作与使用
- linux 下动态链接库的制作与使用
- linux 下动态链接库的制作与使用
- Linux下动态链接库的制作与使用
- linux 下动态链接库的制作与使用
- Linux动态链接库的制作
- Linux制作动态链接库
- 在linux下制作静态库和动态链接库的方法
- linux 下动态链接库的制作与使用[转]
- 动态链接库的制作
- linux 下的动态链接库
- linux下的动态链接库编程
- linux下的动态链接库
- linux下动态链接库的使用方法
- Linux下的动态链接库
- Linux下的动态链接库
- Linux下的动态链接库
- DAY12_history of cryptography
- 51nod oj 1265 四点共面 【数学几何】
- android launcher开发笔记
- 利用itext操作pdf从数据库导出大量数据
- 思维导图
- linux下 动态链接库的制作
- Python实现Event回调机制
- Centos6.4 升级 centos7.2
- Mavena项目错误:Cannot change version of project facet Dynamic Web Module to 3.0
- Ubuntu 12.04 wine QQ
- Python talib库
- HDU cake
- 几种pc端页面 常用的js兼容ie写法,几个名词 nodeName nodeValue及value addEventListener attachEvent
- ShellExecute 与 ShellExecuteEx 的使用方法