Динамическая замена Fedora для libm.a(статическая библиотека)?
Я просто пытаюсь понять, почему в Fedora нет статической библиотеки libm.a
и если это факт, который я должен использовать? Как упомянуто здесь в Stackru, я могу просто установить pkg из yum
, но допустимо думать, что в Fedora замена по умолчанию вместо lib.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
Тест GGC с 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
Благодарю.
1 ответ
Несколько вещей здесь....
Вы не используете математические функции в своем маленьком примере, поэтому вам не нужен libm
Если вам нужен libm, вам не нужен статический
libm.a
, Вы можете связать с динамическим, и вы можете сделать это сgcc -lm
вместо того, чтобы давать имя файла напрямую.Если вам нужно
libm.a
по какой-то причине вы можете найти его вglibc-static
пакет - но по целому ряду причин это не рекомендуется.Как говорится в сообщении об ошибке, на самом деле неправильно то, что вам не хватает
main()
функция. Попробуйте добавить это в конец вашего файла:int main (int argc, char ** argv) {fred (1); Фрэд (2); Фрэд (42); }
а затем скомпилировать с gcc -o fred fred.c