2013-08-30 31 views
1

我有BeagleBone BlackUbuntu 12.04(精確穿山甲)。BeagleBone Black和Ubuntu 12.04(精準穿山甲)上的OpenCV鏈接問題

sudo apt-get install -y libopencv-dev 

此命令安裝必需的頭文件和庫:我使用命令下載OpenCV庫從貼切。然後,我編我自己的計劃,只是顯示用下面的命令窗口:

gcc -I/usr/inlcude/ -I/usr/include/opencv2/ -L/usr/lib/ -lopencv_core -lopencv_highgui -lm opencv_test.c -o test 

幾秒鐘後,它表明,它是無法找到與「lrint」等等,最後顯示的鏈接的引用錯誤爲cvNameWindow,cvShowImage等

我認爲這可能是安裝庫的問題。我下載了最新的OpenCV源代碼,在我的Ubuntu機器上交叉編譯了OpenCV wiki上提供的代碼與-DUSE_NEON=ON標誌。我將這些頭文件和庫複製到格式爲ext4的額外分區中。我再次發出了follwing命令:

gcc -I/usr/inlcude/ -I/media/misc/opencv/include/opencv/ -I/media/misc/opencv/include/ -L/usr/lib/ -L/media/misc/opencv/lib/ -lopencv_core -lopencv_highgui -lm opencv_test.c -o test 

注:/媒體/其它/是額外的分區。

該命令爲我提供了與前面相同的輸出。現在我明白了。也許我沒有發出正確的命令。

我也改變了GCC與G ++,它給我像錯誤:

unable to find reference cvNamedWindow 
unable to find reference cvShowImage 

+0

你有試過這兩個視頻嗎? www.youtube.com/watch?v=Sb0noQkTTjA和www.youtube.com/watch?v=T29BLCh1I54 – user2727765

+0

您的命令行中存在拼寫錯誤,您有-I/usr/inlcude /,但是-I/usr/include /應該是正確的。然而,我沒有安裝opencv來知道可能會有什麼影響。 –

+0

是的,但我沒有在現有命令中輸入錯誤。雖然,我在連接圖書館時遇到了問題。 – moonzai

回答

0

我意外地編譯了OpenCV tarball中給出的示例代碼,並編譯了代碼。然後我查看了構建腳本,並找到以下命令:

g++ `pkg-config --cflags opencv` $1 -o $2 `pkg-config --libs opencv` 

它實際上是一個腳本。 $1是第一個參數,即.cpp文件,而$2是第二個是輸出文件。我使用這個腳本如下:

./build_cv.sh opencv_test.cpp test 

注意:確保腳本文件「build_cv.sh」具有執行權限。如果沒有,則通過輸入以下內容更改其權限:

chmod +x build_cv.sh 

現在問題所在。我在第一次嘗試中給出了頭文件和庫的位置。在給出源文件之前,我必須給出標題的位置,以及輸出文件之後的庫的位置。這是我的經驗;也許其他人有另一種編譯代碼的方式。

0

您的鏈接命令有:-lopencv_core -lopencv_highgui -lm opencv_test.c

這是錯誤秩序參數。要理解爲什麼,請閱讀this

如果我給這個命令我現有的Ubuntu X82的機器,它編譯非常漂亮......

你的意思是「它連接非常漂亮」。

這是由coincidence發生的,不是因爲您的鏈接命令是正確的。

+0

如果我把這個命令給我現有的ubuntu x82機器,它編譯的很好...... – moonzai

+0

是的,那是巧合,我改變了我的鏈接代碼,我遵循samples/c/build_all中給出的命令.sh,它是: g ++'pkg-config --cflags opencv' $ 1 -o $ 2'pkg-config --libs opencv'(有蜱蟲,沒有顯示) 現在連接沒有問題,非常感謝你們所有人...... – moonzai