Я задал похожий вопрос, но у меня есть какое-то обновление, которое меня действительно смущает. По сути, я хочу связать несколько объектных файлов с компоновщиком следующим образом:
/usr/ccs/bin/ld -o q -e start_master -dn -z defs -M ../../../mapfile.q {list of object files}
Я получаю следующую ошибку:
Undefined first referenced
symbol in file
_memset reconf.o
Интересно то, что на memset нет ссылки в reconf.c, и я также выполнил grep'ed весь каталог, но в других файлах также нет ссылки на _memset. Поэтому мне интересно, почему я получаю это сообщение об ошибке от компоновщика, хотя нигде в моем исходном коде _memset фактически не используется. У кого-нибудь есть идея, что здесь может происходить?
Большое спасибо, эта ошибка сводит нас с ума!
EDIT:
Я попытался добавить путь к библиотеке memset, связал его с -lc и запустил в подробном режиме:
/usr/ccs/bin/ld -o q -e start_master -dn -z defs -z verbose -L/usr/lib -M ../../../mapfile.q {list of object files} -lc
Тогда я получаю следующую ошибку:
ld: fatal: library -lc: не найден
ld: fatal: Ошибки обработки файлов. Нет выходных данных, записанных в q
И это, хотя libc.so явно находится в / usr / lib ...
Заблуждение
РЕДАКТИРОВАТЬ II:
Проведя еще несколько исследований, кажется, что в Solaris 10 статическое связывание исчезает, как вы можете прочитать здесь:
http://blogs.oracle.com/rie/entry/static_linking_where_did_it
Вероятно, это моя проблема. Кто-нибудь знает, как я мог бы переписать мою команду компоновщика для обхода этой проблемы?
Большое спасибо!