提示找不到main.cpp中#include的標頭檔案之類的
解決:看看cmakelists.txt裡的include_directories()所需庫的路徑加好沒
不知道為啥剛開始有這個問題,後面就再也沒有這個問題了。。。就算我故意弄成最開始的樣子,都不報這個錯了。。。奇了怪,後面遇到再說吧
報錯如下:
gyh@gyh-w65kj1-kk1:~/bullet_test/main$ make
[ 50%] linking cxx executable 01_bullet
/usr/bin/ld: cmakefiles/01_bullet.dir/main.cpp.o: undefined reference to symbol '_zn18btstaticplaneshapec1erk9btvector3f'
//usr/lib/x86_64-linux-gnu/libbulletcollision.so.2.83: error adding symbols: dso missing from command line
collect2: error: ld returned 1 exit status
cmakefiles/01_bullet.dir/build.make:94: recipe for target '01_bullet' failed
make[2]: *** [01_bullet] error 1
cmakefiles/makefile2:67: recipe for target 'cmakefiles/01_bullet.dir/all' failed
make[1]: *** [cmakefiles/01_bullet.dir/all] error 2
makefile:83: recipe for target 'all' failed
make: *** [all] error 2
通用解決方法一:
重點是報錯的這一行://usr/lib/x86_64-linux-gnu/libbulletcollision.so.2.83: error adding symbols: dso missing from command line
去這個目錄下找,應該是有的。沒有就想辦法裝,當然我這裡bullet裝好了的,肯定是有這個
set(lib_bulletcollision_dir /usr/lib/x86_64-linux-gnu)
#lib_opencv_imgproc_dir是變數名,可以隨意寫
add_library(libbulletcollision shared imported)
set_target_properties(libbulletcollision properties imported_location $/libbulletcollision.so.2.83)
target_link_libraries(
$ libbulletcollision )
在cmakelists.txt中加鏈結庫目錄就行了。。。
如上,提示缺少libbulletcollision.so.2.83,
進/usr/local/include/bullet裡看了一下,顯然就是bulletcollision這個資料夾了,
給他加在target_link_libraries()裡就行了
target_link_libraries(
$ linearmath bullet3common bulletdynamics bulletsoftbody bulletcollision)
解決方法三:
跟方法二類似,把找到的×××.so鏈結庫直接加在target_link_libraries()裡也行
記住target_link_libraries()必須在add_executable()之後
set(target_lib
"/usr/lib/x86_64-linux-gnu/libbulletdynamics.so"
"/usr/lib/x86_64-linux-gnu/libbulletcollision.so"
"/usr/lib/x86_64-linux-gnu/liblinearmath.so"
)add_executable(
$"main.cpp"
)target_link_libraries($$
)
方法一二三對應的附件分別是:main(方法一二);main2(方法三)
附件:
VS2008 C 程式轉C語言程式編譯報錯!
錯誤 1 error c2143 語法錯誤 缺少 在 型別 的前面 f 運單爬蟲 spider trunk spider src dataserver.c 17 spider 錯誤 2 error c2065 addr 未宣告的識別符號 f 運單爬蟲 spider trunk spider src ...
linux之編譯程式
編譯程式 為什麼需要編譯軟體 可用性。儘管系統發行版倉庫中已經包含了大量的預編譯程式,但是一些發行版本不可能包含所有期望的應用,在這種情況下,得到所期望程式的唯一方式是編譯程式原始碼。及時性。雖然一些系統發行版專門打包前沿版本的應用程式,但是很多不是。這意味著,為了擁有乙個最新版本的程式,編譯是必需...
探索c 之尾遞迴編譯器優化
遞迴運用 乙個函式直接或間接的呼叫自身,這個函式即可叫做遞迴函式。遞迴主要功能是把問題轉換成較小規模的子問題,以子問題的解去逐漸逼近最終結果。遞迴最重要的是邊界條件,這個邊界是整個遞迴的終止條件。static int recfact int x recfact 10 上面是個經典階乘函式的實現。這裡...