SlickEdit生成makefile实现Linux下动态库(.so)的引用

动态库和可执行文件的makefile文件的生成已在其余文章中说过,此处不再进行赘述。本文通过一个简单的计算器编写,来说明怎么利用SlickEdit自动生成makefile文件,从而实现动态库(.so)的使用

一、工程结构

bin为目标目录,这个不需要管,设置好生成文件路径即可自动生成

include 存放头文件,此处只有一个calcaulator.h

project 存放SlickEdit工程及生成的makefile文件

src  存放源码,calculator.c

test 存放测试代码 test.c

calculator.c源码

calculator.h源码

test.c源码

 

二、创建工程

按照另外两篇文章来创建即可,不同的是需要设置一下生成文件存放目录,设置方法如下

1)在项目名称处右键,然后选择“Project Properities”,在弹出的界面中对Debug和Release分别进行设置,如下图

2)然后点击确定,注意此时因为.h和.c文件不再同一文件夹下,还需要确定头文件的引用路径

在项目名称处右键,然后选择“GNU C Options”,按照下图进行设置,注意“..\”表示include在当前目录的上一级,如果在上上级就要用“..\..\”,具体设置要跟自己本项目保持一致,切换到Directories界面,然后添加依赖路径

3)执行“Compile”和“Build”,编译成功之后生成makefile文件

这时候在Linux环境下,进入到Project目录,然后执行“make clean all”命令,即可看到libcalculator.so已经成功生成,如下图

接下来是可执行文件工程创建,基本步骤差不多,只是注意makefile文件名称不能跟上面的一样。说一下设置的不同之处

1)工程创建完成之后,在项目名称处右键,然后选择“Project Properities”,在弹出的界面中对Debug和Release分别进行设置,如下图

2) 在项目名称处右键,然后选择“GNU C Options”,按照下图进行设置

-lcalculator表示引用libcalculator.so库,系统会自动在文件名前加上lib,-L../bin/Debug表示到这个相对路径下找libcalculator.so

3)添加头文件路径

4)至此可以尽心编译了,然后会生成名为test的makefile文件,此时project目录下有两个makefile文件

5)开始编译test,编译命令“make --makefile test”,编译成功,如下图

6)到这步libcalculator.so和test(可执行文件)都有了,如下图

两个都有了,理论上来讲已经可以执行了,但是执行结果却如下

提示没有libcalculator.so这个文件,这是因为Linux在编译时默认的链接库路径为定义在搜索/etc/ld.so.conf下的一些路径,此时要想编译时去生成的Debug中查找libcalculator.so,首先需要知道.so文件所在路径

通过“pwd”命令发现libcalculator.so所在路径为/mnt/calculator/bin/Debug,接下来我们定义环境变量,使编译器去Debug路径下搜索 libcalculator.so,设置环境变量命令为export LD_LIBRARY_PATH=/mnt/calculator/bin/Debug

设置完成之后再执行test就可以执行成功了