使用Makefile链接so库文件
来源:互联网 发布:初中语文软件 编辑:程序博客网 时间:2024/06/07 12:41
初学Makefile,权当是笔记,希望对别人有些帮助吧。
------------------------------------------------------------------------------------
本次例子目录结构如下:
目录说明:
lib目录是我自己写的一个so库文件,名为libA.so,很简单,里面的内容截图如下:
-------------------------------------------------------------------------------------------------------------
main目录是测试程序所在目录,用于测试libA.so,里面的内容截图如下:
---------------------------------------------------------------------------------------------------------------------
release目录用于存放编译后的so库文件和编译后的测试程序,截图如下:
-----------------------------------------------------------------------------------------------------------------------
因为main.out用于测试libA.so,所以编译时我们必须先编译libA.so,
libA.so的Makefile内容如下:
exe=../release/libA.so### 链接目标文件$(exe):libA.ogcc -o $(exe) -lstdc++ -fPIC -shared -Xlinker libA.o###编译源文件libA.o:libA.cppgcc -lstdc++ -c libA.cppclean:-rm *.out *.o *.bak
---------------------------------------------------------------------------------------------------------------------------------------
libA.cpp内容如下:
#include <stdio.h>void ShowHello(){printf("hello libA \n");}----------------------------------------------------------------------------------------
main.cpp的Makefile内容如下:
exe=../release/main.out### 链接目标文件### -L ../release 用于指定libA.so所在目录### -lA 链接库文件libA.so$(exe):main.ogcc -o $(exe) -lstdc++ -Xlinker main.o -L ../release -lA###编译源文件main.o:main.cppgcc -lstdc++ -c main.cppclean:-rm *.out *.o *.bak
--------------------------------------------------------------------------------------------------------------
main.cpp内容如下:
#include<stdio.h>extern void ShowHello();int main(void){ShowHello();return 0;}
--------------------------------------------------------------------------------
编译好libA.cpp和main.cpp,跳到release运行main.out,效果如下:
-----------------------------------------------------------------------------------------------------------------------------------------------------
题外话:
运行程序如果提示找不到xxx.so,
敲以下命令即可:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH // 把当前目录加入到库文件搜索目录环境变量
我当时的错误提示如下:
./main.out
./main.out: error while loading shared libraries: libA.so: cannot open shared object file: No such file or directory
- 使用Makefile链接so库文件
- gcc 使用静态库文件 链接库文件 .a makefile .so
- makefile---使用共享库文件so
- Makefile 将多个o文件链接成so文件
- Linux动态链接库.so文件的创建与使用
- Linux动态链接库.so文件的创建与使用
- Linux动态链接库.so文件的创建与使用
- Linux下的动态链接库.so文件的使用
- Linux动态链接库.so文件的创建与使用
- Linux 下使用gcc生成so(动态链接库)文件
- Linux动态链接库.so文件的创建与使用
- Linux动态链接库.so文件的创建与使用
- Linux动态链接库.so文件的创建与使用
- Linux下的动态链接库.so文件的使用
- Linux动态链接库.so文件的创建与使用
- Linux动态链接库.so文件的创建与使用
- Linux动态链接库.so文件的创建与使用
- Linux动态链接库.so文件的创建与使用
- sql server,mysql,oracle三者的区别
- 个人简历
- Webview浅析
- CMFCShellListCtrl使用方法
- RTP 简单的发送端程序和接收端程序
- 使用Makefile链接so库文件
- 时间复杂度的计算
- 如何遍历memcached里面所有key的命令
- [leetcode]32 Length of Last Word
- 【checkio】the Moore neighbourhood
- [Windows]_[MacOSX]_[获取程序的执行文件所在路径(目录)]
- listView条目不能点击问题
- 算法训练 2的次幂表示
- 使用MapWinGis ActiveX控件在shapefile文件图层上画直线