2010-04-25 64 views
0

我不得不使用下面的代碼編譯一個小小的C程序;關於gcc編譯器命令的問題

的gcc -o sine.c正弦-lm

我所需要的 「-lm」,因爲該方案包括math.h中

在編譯器命令下查看,man將其顯示爲-llibrary或-l庫。

我找不到有關其他庫的信息。顯然-lm是math.h 需要其他庫命令可能需要的。

感謝

+4

您需要您需要的庫。您的應用程序需要使用它們的數量幾乎是無限的。 – 2010-04-25 18:08:35

+1

值得注意的是'-lfoo'拾取的庫實際上是'libfoo.so'。 'math.h'包含的c標準庫部分保存在'libm'而不是'libc'中。大概有這樣的歷史原因,但我不能說他們是什麼。 – dmckee 2010-04-25 19:15:37

+1

或'libfoo.a'等 – kennytm 2010-04-25 19:18:14

回答

5

-lm意味着鏈接「米」庫,如你所說包含數學的東西。如果你的代碼需要其他庫,那麼你的這些函數的文檔就會顯示出來。

+0

從技術上講,它意味着*鏈接*「m」庫,不加載 – 2010-04-25 18:29:21

+0

先裝載第一,然後鏈接它:) – Blindy 2010-04-25 18:33:04

-1

如果鏈接沒有錯誤,則不需要其他任何東西。事實上,你甚至不需要指定-lm,因爲它和標準C庫是自動鏈接的。

+0

我覺得'-lm'只是一個例子在這裏... – 2010-04-25 18:36:03

+2

gcc將獨特的方法引入數學圖書館 - 當學生完成他們的第一個gcc實踐時,gcc會帶來許多樂趣。 – 2010-04-25 18:36:10

+1

數學庫不自動鏈接。但是,究竟哪些操作在libm中取決於操作系統和CPU架構。 – bdonlan 2010-04-25 18:46:08