天天看點

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示例程式連結庫的問題

至此,對于一個小小的示例程式,已經完整的配置好了頭檔案目錄,庫目錄以及運作時調用的庫目錄,點選編譯運作,程式通了!

繼續閱讀