не могу найти -lc и -lm в g ++ linux - PullRequest
14 голосов
/ 02 сентября 2011

Я использую ubuntu, gcc и g ++ работали нормально, но сегодня он показал:

cannot find -lm
cannot find -lc

Я искал и обнаружил, что это как-то связано с /usr/bin/ld.что символическая ссылка (я надеюсь) на lbd.bdf.Я вставил этот файл в каталог с Ubuntu некоторых друзей ПК.Это не сработало.

Я обнаружил, что -lc означает включить статическую библиотеку libc.a.
аналогично для -lm

Я нашел их в моем i386-linux-folders (имябыло что-то другое).

Я пробовал блоки кода, но те же ошибки.

Ответы [ 3 ]

24 голосов
/ 08 февраля 2013

компилятор не может найти статический glibc, возможно, вы установили только общие библиотеки
try

yum install glibc-static

6 голосов
/ 02 сентября 2011

убедитесь, что ваш libpath (в g ++) указывает на каталог (и), в котором находятся libm.a и libc.a (используйте опцию -L)

0 голосов
/ 02 сентября 2011

ld является компоновщиком GNU.

man ld ld объединяет несколько объектных и архивных файлов, перемещает их данные и связывает ссылки на символы. Обычно последний шаг при компиляции программы - запустить ld.

Используется для связи вашей программы с библиотекой C и библиотекой C math. Вы должны убедиться, что libc6-dev установлено:

foo@bar: $ dpkg -s libc6-dev

Или, если говорить более обобщенно, укажите build-essential, который зависит от нескольких необходимых пакетов C.

foo@bar: $ dpkg -s build-essential
...