Привет всем!
Почему не работает редактор связей ld?
Стоит FreeBSD 4.5.
Пишу простейший файл на C, содержащий только printf("Hello world")
компилирую его с помощью сс до объектного, затем запускаю LD и вижу сообщения
ld: warning: cannot find entry symbol _start
а потом
undefined reference to 'printf'
Си имеет несколько run-time бииблиотек, типа libC.a и т.п. которые надо цеплять при ld-ке. Список можно найти в манах. А вообще, по-моему все компилеры позволяют сразу и линковать. Ключик -о есть. Что касается сс - это встроенный компилер системы, кастрированный до безобразия, предназначенный для сборки ядра и дров. Если есть неуемное желание повозиться с ним - рой доку. Если нет желания - ставь гнутый и забудь про стандартные либы.
Вопрос должен жить в FAQ.>Си имеет несколько run-time бииблиотек, типа libC.a и т.п. которые надо цеплять
>при ld-ке. Список можно найти в манах. А вообще, по-моему все
>компилеры позволяют сразу и линковать. Ключик -о есть. Что касается сс
>- это встроенный компилер системы, кастрированный до безобразия, предназначенный для сборки
>ядра и дров. Если есть неуемное желание повозиться с ним -
>рой доку. Если нет желания - ставь гнутый и забудь про
>стандартные либы.Не надо на cc катить баллон. Нормальный компилятор. Человек напрямую
вызывает ld.
При таком вызове надо не забыть crt0.o, библиотеки (как было сказано),
при случае -- crtend.o, и все в нужном порядке (ld проходит по командной
строке один раз). Попробуйте собрать свою аппликацию посредством cc -v;
там увидите командную строчку ld.