我只是想弄清楚,为什么Fedora没有静态库,如果这是事实,我应该使用它?
正如StackOverflow中提到的,我可以简单地从libm.a
安装pkg,但是可以认为Fedora有一个替换的默认库,不是吗?
编辑
我正试图编译这个:
#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
用
yum
和lm
及/usr/lib/libm.a
测试ggc我已经完成了这里和其他帖子的所有开始,
/usr/lib64/libm.a
并检查了yum install glibc-static
编辑
/usr/lib64/libm.so
: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,那么实际上不需要静态libm.a
。您可以链接到动态文件,并且可以使用gcc -lm
而不是直接给出文件名。
如果出于某种原因您确实需要libm.a
,您可以在glibc-static
包中找到它-但是出于许多原因,不建议这样做。
正如错误消息所说,真正的错误是您缺少一个main()
函数。尝试将此添加到文件底部:
int main(int argc,字符**argv)
{
弗雷德(1);
弗雷德(2);
弗雷德(42岁);
}
然后用gcc -o fred fred.c
编译
关于c - Fedora是否可以动态替换libm.a(静态lib)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41002773/