Nano Hash - криптовалюты, майнинг, программирование

проблема со ссылкой на libm в gcc 4.6.3

Связывание math.lib с использованием -lm работает по-другому в gcc 4.6.3.

Он используется для работы gcc -lm file.c, но в gcc 4.6.3 это gcc file.c -lm.

В чем причина этого изменения? Или это ошибка?

Спасибо

Это часть кода.

    float i = 100;
    printf("%f", sqrt(i));
    return 0;

Я выполнил вот так

gcc -lm мат.с

/tmp/ccPxTEjS.o: В функции `main':

mat.c:(.text+0x2c): неопределенная ссылка на `sqrt'

collect2: ld вернул 1 статус выхода

Операционная система: Ubuntu 12.04

05.11.2012

  • Это действительно удивляет меня. Уверены ли вы? Что на самом деле произойдет, если вы запустите gcc -lm file.c на 4.6.3? Вы не уточнили в чем проблема. 05.11.2012
  • Вопрос стоит. Что случается? 05.11.2012
  • @JonathonReinhart Изменения, внесенные в вопрос с образцом кода. 05.11.2012
  • nick.zoic.org/art/etc/gcc-linker-libs. html 05.11.2012
  • @nhahtdh Спасибо. Вы знаете причину? 05.11.2012
  • @AnishChandran: я осмотрелся и пришел к противоречивым выводам: некоторые обвиняют gcc, а некоторые обвиняют компоновщик binutil. Я сам не знаю точного ответа. Вероятно, то, что предложил Василий Старынкевич, верно. 05.11.2012
  • @nhahtdh Спасибо!!! Я ценю ваши усилия. :-) 05.11.2012

Ответы:


1

Вы сказали, что пытались скомпилировать его как:

gcc -lm mat.c

Некоторые конфигурации gcc требуют строгого порядка опций, что требует, чтобы библиотеки шли после исходного кода, который их использует:

gcc mat.c -lm

Это работает?

05.11.2012
  • Большинство конфигураций gcc в Linux требуют, чтобы библиотеки шли после исходного кода. И это всегда было верно для Linux и других Unix. Он не изменился за десятки лет. 05.11.2012
  • Это не столько связано с GCC, сколько с Binutils. В OS X GCC распространен, а Binutils — нет, и вы можете указывать библиотеки в любом порядке. 05.11.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..