2014-02-27 116 views
1

我剛剛在64位Ubuntu機器上對叮3.4進行了全新安裝,我試圖編譯一個使用OpenCV的項目。 Clang和OpenCV庫都是使用apt-get從ubuntu存儲庫安裝的。使用GCC可以正常工作。構建過程由CMake管理。使用Clang編譯基於OpenCV的項目

當我使用鏘運行生成我得到以下錯誤:

/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.1' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.2' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.2' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.1' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.0' 
/usr/lib64/gcc/x86_64-linux-gnu/4.8/../../../../lib64/libopencv_ocl.so: undefined reference to `[email protected]_1.1' 

他們似乎OpenCL的關係。我該如何解決這些鏈接器錯誤?

+1

如果您嘗試使用cmake編譯opencv,該怎麼辦?通常cmake會對編譯器做一些額外的檢查 – nkint

+0

@nkint你的意思是獲取OpenCV源代碼並使用cmake編譯自己? –

+1

是的,確切地說。通過包管理器安裝蛋糕,從github下載OpenCV源代碼,嘗試'mkdir build; cmake ..' – nkint

回答

1

嘗試手動編譯它。有時通過數據包管理器安裝依賴關係時會出現一些問題。 CMake是一個非常強大的工具。它執行檢查編譯器,平臺等

安裝CMake(通過數據包管理器),並且從庫下載的最後的OpenCV源:

https://github.com/Itseez/opencv

和型外殼上的標準命令蛋糕房:

$ cd opencv_path 
$ mkdir build 
$ cmake .. 
$ make 

執行的蛋糕還可以輸出一些重要的信息,最好是閱讀:)

opencv的CMake腳本也爲您提供了配置CUDA和OpenCL的好方法!

+0

所以,我猜測與Clang和libC++手動編譯將不再使代碼與gcc和libstdC++編譯?使用OpenCV進行編碼時,是否無法在兩個編譯器之間輕鬆切換? –

+0

我猜它缺少第二行和第三行之間的「$ cd build」。對不起,重溫這樣的老問題,但它在谷歌搜索高票價 –