編譯lm
① gcc 編譯怎麼加上-lm 選項,搜出來的答案真心看不懂啥意思,能不能說說具體步驟啊
程序中用到數學函數.
原本只要在程序中加上#include<math.h>頭文件就可以了。但有的系統上的gcc不僅程序里要有include,編譯的時候也要在指令後面加-lm
否則就會出錯:
/tmp/cc4FFwdt.o(.text+0x126): In function `main':: undefined reference to `sqrt'/tmp/cc4FFwdt.o(.text+0x169): In function `main':: undefined reference to `數學函數名'collect2: ld returned 1 exit status
編譯時使用方法:
gcc -o abc abc.c -lm
編譯程序時得到undefined reference to 'xxxx'這樣的錯誤提示
那你一定是缺少某個庫,用 -l參數將庫加入。
linux的庫命名是一致的,一般為libxxx.so,或libxxx.a,libxxx.la,那麼你要鏈接某個庫就用-lxxx,去掉頭lib及"."後面的so,la,a等即可。 同時,常見的庫鏈接方法為: 數學庫 -lm ; posix線程 -lpthread
② linux下C語言對編譯報錯『expl』未定義的引用
可以查看編程手冊,對裡面提到的宏進行測試,看是否支持該函數:
比較簡單的方法是加編譯器參數: -std=c99
別忘了鏈接的時候加-lm
③ gcc編譯命令中-lm是什麼意思
鏈接名稱為libm.o或者libm.so的庫文件。
④ gcc編譯帶math.h的程序,加-lm參數也沒用
報錯的是ld階段,表示鏈接失敗,找不到squr函數,根本原因是找不到libm.so。跟math.h頭文件沒有任何關系,頭文件有問題的話在預處理階段編譯之前就會報錯了。
你的-lm估計加的地方不對,要確保在鏈接階段添加,不是編譯的時候。
⑤ ubuntu中編譯C語言程序時使用數學函數時總是出問題編譯不能通過,這要怎麼解決呢
math在連接時需要添加參數,很久不搞linux的程序了,我映像是-o 編譯時加上 -lm像下面這樣:
gcc -lm -o xxx.out xxx.c
因為math.h不是C運行庫函數,就像linux下線程函數庫pthread.h也不是,都需要在編譯時連接該庫
如果你有IDE(如eclipse)+ GCC 開發C程序,可以在項目屬性中編譯命令中添加-lm,作用是一樣的 (本人用VI很不熟練。。。)
樓主如果需要可以到www.eclipse.org下載IDE,不用手動添加Mingw和GCC,它已經全部搞定了,用起來很方便。
⑥ C語言用gedit編程結束用gcc編譯時輸入-lm是為了什麼比如程序是a.c,編譯gcc a.c -lm。在線等!
那是因為你的程序裡面用到了數學函數吧?
也就是說用到了<math.h>
在gcc裡面,需要手動鏈接數學函數庫,所以要加上那句
純手打
謝謝採納
⑦ 我畫了一個LM317直流穩壓電源,但每次一編譯LM317ADJ處都有問題,希望哪位好心的朋友幫忙解答
R3與R2應該有個接點吧 不知道你這是什麼制圖軟體
⑧ gcc main.c bp_alg_api.c -lm -o test和gcc -lm main.c bp_alg_api.c -o test後者為何不能編譯通過
庫文件要放在目標文件後面才能鏈接到庫里的符號
⑨ 在ubuntu下編程C包含了math.h,,編譯的時候也加上了-lm,但是始終無法編譯通過,找不到sin,求大神指點!
你的函數庫可能不在通常的路徑中 先查找你的math.h在哪裡 whereis math.h 如果不在應該的路徑, 後面加上-L/路徑
⑩ g++編譯參數 -lm 是什麼意思
g++編譯程序成為.o目標函數,然後需要和庫函數連接到一起
-l是傳遞給link程序叫它連接某些庫函數
-lm是連接數學庫
如果沒-lm那些三角函數啊,超越函數啊,都沒法連接成功的