天天看点

linux环境下,解决eclipse找不到Pylon示例程序链接库的问题

问题来源:

最近须要在linux环境下学习basler摄像头的使用方法,安装了basler的套装程序pylon5,该套装程序提供了开发程序所必须的库文件,并在Sample文件夹下提供了一些示例程序,每个示例程序都配好了makefile文件,在终端里运行make,即可生成可执行文件。

但是,若不使用原有的makefile文件,而是将示例程序的.cpp文件添加到eclipse工程中编译时,就会因缺少链接库而编译失败。

分析原因:

原有的makefile文件里写好了各个链接库文件的位置,而通过.cpp文件单独创建一个eclipse工程时,各种包含目录,库文件目录都没有指定,需要在工程->属性中配置头文件包含目录和库文件包含目录。

为什么需要这些库,可以这样来理解:

每开发一种项目,就需要对应的一些库,以C语言为例,写openGL程序,就会在程序开头加#include glut.h等语句,这些头文件中又会调用对应的glut.lib库文件,那里有具体的函数实现。找不到库文件,就会出现某某函数为定义的错误。

若果你程序写的都没错,但总遇到某某函数未定义之类的问题,那就得看看是不是头文件目录、库目录没添加好了。

这里我遇到的问题就是在linux版eclipse开发环境下,没有配置好pylon的库文件目录。

如何解决:

1、添加头文件目录。这个相对简单,vs2010开发环境下配置过头文件目录的话,eclipse下添加头文件目录基本是一样的:Project->properties->C/C++Bulider->setting->GCC C++ Compiler->Includes,在这里添加头文件所在路径

linux环境下,解决eclipse找不到Pylon示例程序链接库的问题

2、添加库目录所在路径。

首先,需要知道应该添加哪些库,库的名字须要根据自己的程序来查,你在开发哪方面程序,用谁的SDK,就得知道对应的库文件,这里我从Pylon5示例程序的makefile文件里看到了应该用到的库。

其次,为了让eclipse找到这些库文件,现在须要添加库文件及库目录。project->properties->C/C++Bulider->setting->GCC C++ Linker->Libraries,在这里写库的名字和位置

linux环境下,解决eclipse找不到Pylon示例程序链接库的问题

须要注意的是,linux下lib文件命名有一定规则,开头都是lib,结尾都是.so,比如libpylonbase.so这个文件,须要把开头的lib和结尾的.so去掉,在eclipse里只填写中间的部分pylonbase即可。

3、如果你的程序在”运行时”还需要调用一些库,那你还得多配置一步,即添加运行时的库目录。

在网上搜一搜,可以发现,程序调用库文件可分为编译链接时调用和运行时调用,对于运行时调用的库文件,你可以去配置系统的环境变量(windows和linux下都有这个概念),但这样会使系统的环境变量表越来越臃肿,万一影响别的程序了呢?所以,为每个工程单独配置运行时的库目录,可以避免修改系统环境变量。

具体方法就是给gcc 加一个参数-Wl,-rpath=/opt/pylon5/lib64,在eclipse下怎么加这个参数呢?如截图所示:

linux环境下,解决eclipse找不到Pylon示例程序链接库的问题

至此,对于一个小小的示例程序,已经完整的配置好了头文件目录,库目录以及运行时调用的库目录,点击编译运行,程序通了!

继续阅读