Re: gcc: непонятки с new/delete

From
Nick Gazaloff ()
To
Boris Rudakov ()
Date
2003-09-20T21:37:34Z
Area
CARBON.COPY
 * Forwarded from area 'RU.UNIX.PROG'
From: Nick Gazaloff <nick@sbin.org>

On Wed, 17 Sep 2003 09:52:48 +0400
Boris Rudakov <Boris.Rudakov@p4.f9.n5054.z2.fidonet.org> wrote:

> Hello All!
> 
> Гнусь 3.3, столкнулся со странной проблемой. Пользуюсь гнусью редко,
> поэтому не только не могу понять в чем дело, но и куда копать :(
> 
> Собираю плюсовую софтинку, все компилляется, срубается на линке. Выводит
> вот такое:
> 
> groff.o(.text+0x1c): In function `c_fatal':
> groff.cc:583: undefined reference to `___gxx_personality_sj0'
> groff.o(.text+0xf65):groff.cc:584: undefined reference to `operator
> delete(void*)'
> 
> .......
> 
> ../libgroff/libgroff.a(string.o)(.text+0x26): In function
> `_ZN6string5clearEv': libgroff/string.cc: undefined reference to
> `operator new[](unsigned)'
> 
> И все в таком духе. Ничче не понимаю :(
> 
> В компайлерах с которыми я работаю (Борланд, Иивижуал) все эти операторы
> - инлайновая фикция и приседания вокруг них и конструкторов/деструкторов
> компайлер в общем случае делает сам. Гнусью я плюсовые тексты тоже
> компиллял, но очень редко, опыта работы с ней нет, куда копать
> представляю слабо. Созерцание ключиков компилляции ни на какие мысли не
> навело :(
> 
> Чего делать ?
> 
> Да, на всякий случай: хост-система Interix 3.5, target - она же, сишный
> софт компилляется и собирается без каких либо проблем.
> 
> Boris Rudakov,               Советская колыбельная должна будить !
> BBR
> 


gcc -- это stub, вызывающий нужную программу в зависимости от суффикса
файла, указанного в параметрах. Когда указаны .o, он вызывает ld с нужными
параметрами. Поэтому gcc можно запускать, как компоновщик. Но!

Но gcc не знает, что объектные файлы созданы компилятором C++. А вот g++
(тоже stub) предполагает это и указывает компоновщикку еще и -lstdc++, где
как раз и определены new и delete.

Поэтому, если компоновать объектные файлы C++ с помощью команды gcc, надо
добавлять параметр -lstdc++.



-- 

Best regards,
Nick
(GPG Key ID: 4396B2D0, fingerprint: 648E C3FE ACF6 A730 FF52 D717 776D
1CB0 4396 B2D0)

--- ifmail v.2.15dev5
 * Origin: CSA (2:5020/400)