【发布时间】:2011-02-20 08:25:45
【问题描述】:
当我尝试包含<math.h> 时,我发现我需要使用命令gcc -lm 链接数学库
但我正在寻找另一种“在代码中”链接数学库的方法,它不需要用户使用任何选项进行编译..
gcc -lm 可以在 C 代码中使用 #pragma 或其他东西完成吗?
编辑:我已将 -ml 更改为 -lm
【问题讨论】:
当我尝试包含<math.h> 时,我发现我需要使用命令gcc -lm 链接数学库
但我正在寻找另一种“在代码中”链接数学库的方法,它不需要用户使用任何选项进行编译..
gcc -lm 可以在 C 代码中使用 #pragma 或其他东西完成吗?
编辑:我已将 -ml 更改为 -lm
【问题讨论】:
为用户(或实际上为开发人员)简化复杂性的常用方法是编写一个 makefile。
【讨论】:
首先,它是gcc -lm,没有#pragma 意味着提供链接指令
【讨论】:
不,您需要告诉链接器链接库才能链接库。
链接器不知道代码,只知道编译的目标文件。它不会看到特定于语言的编译指示。
【讨论】:
你没有说你使用的是哪个 UNIX shell,但如果这只是为了方便,只需编写一个 shell 函数:
gcm() {
gcc -lm $*
}
把它放在你的shell的启动文件中,你就可以编译和链接数学库了:
gcm mycode.c
【讨论】:
使用-lm 是唯一的选择。此外,使用#pragma 是微软特有的,而且相当肮脏。想象一下,有一个新的超高效数学库需要 -lsupermath 而不是 -lm - 那么您必须修改代码而不是修改 makefile 或 make 配置文件。
【讨论】:
不,gcc 没有用于链接库的编译指示。您必须使用命令行选项链接到数学库(它是 -lm 而不是 -ml )
【讨论】: