使用gcc編譯的時候,可能會出現下面的情況:雖然我們在**檔案中新增了一些必要的庫,但是編譯還是提示沒有定義函式。原因是還需要指定函式的具體路徑。
首先,要對函式進行查詢。函式的查詢方法如下:
在終端輸入命令:
#nm -o /lib/*.so | grep 函式名
或者#nm -o /usr/lib/*.a | grep 函式名
比如查詢函式sqrt,在終端輸入命令:
#nm -o /usr/lib/*.a|grep sqrt
這時,查詢的結果中有部分內容顯示如下:
.....
/usr/lib/libm.a:w_sqrt.o:00000000 t __sqrt
/usr/lib/libm.a:w_sqrt.o:00000000 w sqrt
/usr/lib/libm.a:s_casinh.o: u __csqrt
/usr/lib/libm.a:s_cacosh.o: u __csqrt
/usr/lib/libm.a:s_csqrt.o:00000000 t __csqrt
......
在/usr/lib/libm.a:w_sqrt.o:00000000 w sqrt中,除去函式庫頭lib,所餘下的符號為"m",在編譯時用字元「l」與餘下的符號「m」相連線成「lm」,在編譯時加上此引數,即:
#gcc 1-6.c -o 1-6 -lm
就能正確通過編譯。
Maven編譯時,出現找不到符號
今天在編譯專案時出現了找不到符號的錯誤,在網上找了很久發現解答都大同小異。最後發現是由於多module工程,每個module維護乙個pom,最好保持所有子pom的parent version保持與主pom version一致。否則可能會出現找不到包和找不到符號的情況。分析發現應該是git協同中,pu...
系統找不到指定檔案怎麼解決
windows 平台許多軟體的安裝和開啟,都會發生 系統找不到指定檔案的情況下面列舉種?系統找不到指定檔案 解決方法,一種是檔案所在的目錄太長,一種是檔案缺失。如下圖,這個檔案找不到,是因為目錄路徑太長,windows識別不了這麼長的目錄,首先,這個目錄上級目錄已經是windows的臨時快取目錄,然...
當 gcc 找不到內建的標頭檔案
今天編譯原廠提供的韌體,遇到 error no include path in which to search for limits.h 的問題。google 得到的說法是 gcc 在配置時指定的 include path 錯了,對於我這種 ubuntu 下偷懶 apt get 來得到 gcc pa...