1
我收到以下錯誤,當我嘗試編譯我的應用程序:沒有規則,使目標...... libm.a
*** No rule to make target `/mypath/lib/libm.a', needed by `/myPath/bin/appName'
爲什麼是根據絕對路徑鏈接找libm.a?
我收到以下錯誤,當我嘗試編譯我的應用程序:沒有規則,使目標...... libm.a
*** No rule to make target `/mypath/lib/libm.a', needed by `/myPath/bin/appName'
爲什麼是根據絕對路徑鏈接找libm.a?
我開始交換臺節目通靈事業的思考...
爲什麼是根據絕對路徑鏈接找libm.a?
因爲你讓他這麼做。最有可能您已輸入
# There were some rules that build your own .a libs
myLib.a: ...
...
# Handy rule to direct your libs into lib/ folder!
vpath %.a /mypath/lib
appName: appName.o libm.a
g++ $^ -o [email protected]
哎呀!你需要「系統」libm.a
(這是一個數學庫,glibc的一部分),但make
認爲你需要你自己的靜態庫。然後它添加適當的前綴並且沒有找到任何規則來重製libm.a
。
解決方案可能會將libm.a
移出先決條件。這是配置腳本或特殊目標來檢查系統庫的存在的目的。
EXT_LIBS=libm.a
appName: appName.o
g++ $^ $(EXT_LIBS) -o [email protected]
錯誤消息來自make,而不是來自鏈接器,所以這個答案很可能是正確的。 – 2009-11-11 06:11:51
你需要發佈你的makefile來找出它有什麼問題。 – kdt 2009-11-09 20:45:52
他 - 他,我敢打賭他不需要*,但肯定會對他很好:) – 2009-11-09 20:54:05
那麼,Nathan,有什麼意見?代碼示例不起作用?什麼? – 2009-11-10 16:38:40