libm.a(静态库)的 Fedora 动态替换?
Fedora dynamic replacement for libm.a(static lib)?
我只是想弄明白,为什么 Fedora 没有静态库 libm.a
,如果这是事实,我应该使用哪个?
正如 Whosebug 中提到的 here 我可以简单地从 yum
安装 pkg,但认为 Fedora 默认有一个替换 lib instead.No?
已编辑
我正在尝试编译这个:
#include <stdio.h>
#include <stdlib.h>
void fred(int arg)
{
printf("fred: you passed %d\n", arg);
}
输出是这样的:
$ gcc -o fred fred.c /usr/lib64/libm.so
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/../../../../lib64/crt1.o: En la función `_start':
(.text+0x20): referencia a `main' sin definir
collect2: error: ld devolvió el estado de salida 1
使用 lm
和 /usr/lib/libm.a
以及 /usr/lib64/libm.a
测试 ggc
我已经完成了这里和其他帖子中提到的所有内容,yum install glibc-static
并检查了 /usr/lib64/libm.so
编辑
repoquery --whatprovides /usr/lib64/libm.a
:
failure: repodata/repomd.xml from fedora-cisco-openh264: [Errno 256] No more mirrors to try.
https://codecs.fedoraproject.org/openh264/24/x86_64/repodata/repomd.xml: [Errno -1] repomd.xml signature could not be verified for fedora-cisco-openh264
谢谢。
这里有几件事....
你的小例子中没有使用任何数学函数,所以你真的不需要 libm
如果您确实需要libm,那么您实际上并不需要staticlibm.a
。您可以 link 反对动态的,您可以使用 gcc -lm
而不是直接给出文件名。
如果您 确实 出于某种原因需要 libm.a
,您可以在 glibc-static
包中找到它 — 但对于整个不推荐这样做的原因有很多。
正如错误消息所说,真正的错误是您缺少 main()
函数。尝试将其添加到文件底部:
int main (int argc, char **argv)
{
弗雷德(1);
弗雷德(2);
弗雷德(42);
}
然后用gcc -o fred fred.c
编译
我只是想弄明白,为什么 Fedora 没有静态库 libm.a
,如果这是事实,我应该使用哪个?
正如 Whosebug 中提到的 here 我可以简单地从 yum
安装 pkg,但认为 Fedora 默认有一个替换 lib instead.No?
已编辑
我正在尝试编译这个:
#include <stdio.h>
#include <stdlib.h>
void fred(int arg)
{
printf("fred: you passed %d\n", arg);
}
输出是这样的:
$ gcc -o fred fred.c /usr/lib64/libm.so
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/../../../../lib64/crt1.o: En la función `_start':
(.text+0x20): referencia a `main' sin definir
collect2: error: ld devolvió el estado de salida 1
使用 lm
和 /usr/lib/libm.a
以及 /usr/lib64/libm.a
我已经完成了这里和其他帖子中提到的所有内容,yum install glibc-static
并检查了 /usr/lib64/libm.so
编辑
repoquery --whatprovides /usr/lib64/libm.a
:
failure: repodata/repomd.xml from fedora-cisco-openh264: [Errno 256] No more mirrors to try.
https://codecs.fedoraproject.org/openh264/24/x86_64/repodata/repomd.xml: [Errno -1] repomd.xml signature could not be verified for fedora-cisco-openh264
谢谢。
这里有几件事....
你的小例子中没有使用任何数学函数,所以你真的不需要 libm
如果您确实需要libm,那么您实际上并不需要static
libm.a
。您可以 link 反对动态的,您可以使用gcc -lm
而不是直接给出文件名。如果您 确实 出于某种原因需要
libm.a
,您可以在glibc-static
包中找到它 — 但对于整个不推荐这样做的原因有很多。正如错误消息所说,真正的错误是您缺少
main()
函数。尝试将其添加到文件底部:int main (int argc, char **argv) { 弗雷德(1); 弗雷德(2); 弗雷德(42); }
然后用gcc -o fred fred.c