gcc編譯檔案時找不到指定函式怎麼辦

2021-04-22 07:39:45 字數 733 閱讀 8850

使用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...