🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #5029

Re: Inicjalizacja obiektów globalnych w bibliotekach dynamicznych

#5029
From: Kalafiorczyk
Date: Fri, 05 Mar 1999 06:29
41 lines
2253 bytes
Piotr Piatkowski wrote:
> Niestety, już na samym początku prac pojawił się problem - program
> linkowany statycznie działa poprawnie, linkowany z biblioteką dynamiczną
> core'uje się. Szczęśliwie dość szybko udało mi się dojść przyczyny.

Czołem Piotrze!

Ja nic nie wiem na temat egcs, ale twój problem jest standartowym
problemem programistów C++ we wszystkich Unixach. Nie będę Ci
tłumaczył łopatologicznie, podam tylko ogólny zarys.

Najpierw kompilacja C:
    cc a.c
jest równoważne (w przybliżeniu):
    cc -c a.c -o a.o
    ld a.o -lc -o a.out

Teraz dla porównania w C++:
    CC a.C
jest równoważne (w przybliżeniu):
    CC -c a.C -o a.o
    c++prelink a.o
    ld a.o -lC -lc -o a.out
    c++patch a.out

c++prelink zajmuje się generowniem instancji templat. c++patch zajmuje się
generowaniem wywołań konstruktorów dla obiektów statycznych. Oba trzeba
wywołać zarówno przy budowaniu shared objects jak i executables.

Musisz albo znależć c++patch w Twoim systemie, albo podejżeć jaką
opcję trzeba podać dla ld. Na moim Unix-ie to jest zautomatyzowane
przy użyciu CC w następujący sposób:
    CC -shared a.C -o a.so
albo:
    CC -c a.C -o a.o
    CC -shared a.o -o a.so
w zależności od tego, jak jest wygodniej użytkownikowi kompilatora.

Życzę powodzenia.

Sylwester
Technical Details
Message-ID: <36DF79C9.E61C17E2@netcom.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!news.wnaft.agh.edu.pl!news.memax.krakow.pl!paa.gov.pl!news.swierk.pl!news.icm.edu.pl!fu-berlin.de!isdnet!cyclone.news.idirect.com!island.idirect.com!newsfeed.enteract.com!ix.netcom.com!news
References: <7blnec$qo8$1@druid.ceti.com.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!news.wnaft.agh.edu.pl!news.memax.krakow.pl!paa.gov.pl!news.swierk.pl!news.icm.edu.pl!fu-berlin.de!isdnet!cyclone.news.idirect.com!island.idirect.com!newsfeed.enteract.com!ix.netcom.com!news
From: Kalafiorczyk <simg@netcom.com>
Newsgroups: pl.comp.objects
Subject: Re: Inicjalizacja obiektów globalnych w
 bibliotekach dynamicznych
Date: Thu, 04 Mar 1999 22:29:29 -0800
Organization: nie ma, za malo kawy
Lines: 42
Message-ID: <36DF79C9.E61C17E2@netcom.com>
References: <7blnec$qo8$1@druid.ceti.com.pl>
NNTP-Posting-Host: netcom11.netcom.com
Mime-Version: 1.0
X-NETCOM-Date: Thu Mar 04 10:36:16 PM PST 1999
NNTP-Posting-User: simg
X-Mailer: Mozilla 4.06 [en] (Win95; I)
To: Piotr Piatkowski <kompas@ceti.com.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit