bullet探索之 程式編譯報錯篇

2021-10-03 08:46:23 字數 2350 閱讀 1812

提示找不到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 上面是個經典階乘函式的實現。這裡...