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