|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Anton Morozov 2:5051/39 26 Nov 2004 22:34:20 To : All Subject : multiple --------------------------------------------------------------------------------
Есть у меня проблема. Точнее, программа.
Программа представляет собой несколько .cpp файлов.
Каждый файл имеет как бесплатное приложение .h
В каждом .h как бонус прописано
#ifndef _LABUDA
#define _LABUDA
файл
#endif
, вообщем, стандартная затычка.
Файлы собираются по одному с ключом -с. Прекрасно собираются.
Затем g++ -lc -lstdc++ -o Q *.o
и - вот оно! - куча сообщений линкера о том, что мол такое-то там-то уже
используется тем-то (программа активно использует обьекты из разных файлов).
Сообщения такие:
/home/anvir/fmud/src/sys.cpp:96: multiple definition of `sys_command'
/tmp/ccHuAxNb.o:/home/anvir/fmud/src/cons.cpp:81: first defined here
Т.е. cons.h пользует sys.h раньше, чем сам sys.cpp, и g++ ругается на то, что
sys.cpp определяет собственную же переменную. Бред, короче.
Раньше оно собиралось вроде бы gcc 3.3.2 (?), который к линкеру имеет ключик -z
muldefs, т.е. класть на множественные описания. Теперь у меня gcc 3.3.4, и
ключа такого там нет.
Помозите дураку, люди божие!
С уважением от меня.
... SMS me: (+7)-8422-981722
--- FreeBSD/4.10-RELEASE
* Origin: Varranty void if this text removed (2:5051/39)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/186041a77a3d.html, оценка из 5, голосов 10
|