链接GCC中的包含文件

链接GCC中的包含文件,gcc,Gcc,我永远记不起在GCC中链接include文件时要键入什么,事实上我唯一记得的是-lmformath.h。我现在特别关心的是sys/time.h 清理了一些东西,但我仍然想要一个列表 有人知道链接选项的好列表吗 编辑: 也许我的问题不清楚。我想知道我在制作C程序时可能需要链接的各种库的命令行中需要键入什么(比如数学的-lm,或者pthread的-lpthread)。我不确定我是否理解你的问题,但是-lm不是ld选项,而是-l选项,并且-lx链接libx.a(或者,这取决于)。您可能需要查看ld手册

我永远记不起在GCC中链接include文件时要键入什么,事实上我唯一记得的是
-lm
for
math.h
。我现在特别关心的是
sys/time.h

清理了一些东西,但我仍然想要一个列表

有人知道链接选项的好列表吗

编辑:


也许我的问题不清楚。我想知道我在制作C程序时可能需要链接的各种库的命令行中需要键入什么(比如数学的
-lm
,或者pthread的
-lpthread
)。

我不确定我是否理解你的问题,但是-lm不是ld选项,而是-l选项,并且-lx链接libx.a(或者,这取决于)。您可能需要查看ld手册以获得完整的选项列表。

我认为除math之外的所有其他标准库都包含在libc中。(.a)(-lc)

中提供的功能在
libc.so
(C库)中实现。您不需要在中链接任何其他内容,因为gcc应该自动链接到
libc。没有“包含文件链接”,而是针对包含代码定义的符号的库进行链接

-l
标志是其中之一,用于指定要链接的其他库

编辑,因为我的gcc在编译时对我的源代码执行优化


此外,该链接中的信息有点过时-在现代GCC中,您不需要指向
libm
(这就是
-lm
-lm
的明确链接)

哇,那是什么时候发生的?我很确定这一点在一年前是准确的…@ephemient-
libstdc++
仍然链接到
libm。所以在我的系统上(使用G++4.4.5),但我的意思是你不应该需要
-lm
标志来使用C代码将其引入。我只是想知道这是什么时候改变的。使用GCC 4.2.4、4.3.5、4.4.3、4.4.5和4.5.1以及glibc 2.11.1和2.12.1进行测试,对于普通的
GCC
,我仍然需要
-lm
。你指的是哪种现代GCC?@ephemient-我在Debian5上使用GCC4.4.5-这可能只是我版本的一个怪癖。我使用一堆
math.h
函数编译了C代码,并且只使用
gcc source.C
进行编译。我刚刚在带有GCC4.1.2的RH5机器上进行了测试,它需要
-lm
。是时候编辑我的答案了。我想知道它是否依赖于架构。我在3台x86_64机器上进行了测试:Gentoo、Debian sid(glibc 2.11.2附带,我在前面的评论中计算错误)、Ubuntu Lucid。还有,你确定你在连接数学函数吗?GCC的不断折叠也将折叠数学函数。
libcrypt
libdl
libpthread
libresolv
librt
都包含了更多标准的C/POSIX函数,而这些函数不在
libc
libm
中。许多人会认为<代码> LBZ < /代码>也是一个标准的系统库。