多個PCL庫導致編譯出錯的問題

2021-07-02 23:03:44 字數 795 閱讀 6104

背景:

之前的乙個程式,編譯木有問題,各種鏈結庫也都ok。之前編譯時,會出現2個警告:

現在,編譯居然不出現這兩個警告,但是,鏈結庫出問題,導致編譯不通過。

in function `pcl::pointcloud::operator+=(pcl::pointcloudconst&)':

register_clouds.cpp:(.text._zn3pcl10pointcloudins_8pointxyzeeplerks2_[pcl::pointcloud::operator+=(pcl::pointcloudconst&)]+0x1b): undefined reference to `ros::timebase::operator>(ros::time const&) const'

原因:在cmakelists.txt中,我是用 find_package(pcl 1.2 required) 去找pcl庫路徑的。我在ubuntu系統中首先手動安裝pcl庫,那時編譯是沒有問題的。但是,後來,我安裝了groovy,而且是特別全的版本,裡面也有pcl庫。這樣,我系統中出現兩個不同路徑的pcl庫了,用find_package(pcl 1.2 required) 會把這兩個庫都找到,像上述的問題是由於程式鏈結了ros下面的pcl庫導致的。

解決方法:

sudo gedit /opt/ros/groovy/include/pcl-1.6/pcl/point_cloud.h

新增: #include

編譯通過!

gcc庫的鏈結順序導致編譯出錯的問題

當乙個庫為基本庫時,需要將該庫放到引用它的庫的後面進行鏈結,方能得到正確結果。例如在ob中 ldadd top builddir src mergeserver libmergeserver.a top builddir src common libcommon.a top builddir src...

編譯出錯的可能情況

編譯器的一部分工作是尋找程式文字中的錯誤。編譯器沒有能力檢查乙個程式是否 按照其作者的意圖工作,但可以檢查形式 form 上的錯誤。下面列出了一些最常見的 編譯器可以檢查出的錯誤。語法錯誤 syntax error 程式設計師犯了c 語言文法上的錯誤。下面程式展示了一些常 見的語法錯誤 每條注釋描述...

linux 下gets函式編譯出錯問題

main.c 29 5 warning implicit declaration offunction gets wimplicit function declaration gets buffer warning the gets function is dangerous and should ...