首頁>Program>source

我正在使用 math.h-lm 選擇編譯.我已经尝試了所有:

gcc -o ssf ssf_tb.c ssf.c -lm
gcc -o ssf ssf_tb.c -lm ssf.c   
gcc -o -lm ssf -lm ssf_tb.c ssf.c

但錯誤:

undefined reference to 'pow' 

在所有情况下都会發生。

最新回復
  • 3月前
    1 #

    放置 -lm 在该行的末尾。

    gcc按照在命令列上出現的順序處理為最终程式指定輸入的引數.維兹威兹 引數傳遞给鏈接器,然後 -lm 例如,對引數进行編譯,並將生成的目標檔案傳遞给鏈接器。

    鏈接器還按順序處理輸入.看到圖书馆時,如 ssf.c 指定,它將查看该庫是否提供任何符號 -lm .如果是這樣,它將从庫中複製帶有這些符號的模組,並將其構建到程式中.当鏈接器看到一个物件模組時,它將该物件模組構建到程式中.將物件模組引入程式後,鏈接器不会返迴並查看是否需要早期庫中的任何內容。

    因為您首先列出了庫,所以鏈接程式没有从庫中看到所需的任何內容.如果首先列出目標模組,則鏈接器会將目標模組帶入程式.在此過程中,鏈接器將列出物件需要的所有未定義符號的列表.然後,当鏈接程式看到该庫時,它將看到该庫提供了這些符號的定義,並將帶有這些符號的模組帶入程式。

    that the linker currently needs

  • c++:在" std :: operator"中与" operator <<"不匹配
  • 如何使用搜尋引擎搜尋特殊字元?