🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #11473

Re: static flag in solaris7

#11473
From: Philip Paeps
Date: Wed, 06 Feb 2002 12:00
57 lines
3007 bytes
incubus <incubus@securax.org> wrote:
> Ik probeer een server applicatie te schrijven onder solaris 7 x86, en deze
> wilt niet compileren met de -static flag (die ik nodig heb.)

Mijn innige deelneming ...  Static linking onder Solaris is een Pest, met
hoofdletter 'P'.  Ik vermoed dat ze het bij Sun opzettelijk lastig maken!

[...]

> $ gcc -lsocket -static server.c
> Undefined                       first referenced
>  symbol                            in file
> socket                          /var/tmp/ccFv98I.o
> accept                          /var/tmp/ccFv98I.o
> bind                            /var/tmp/ccFv98I.o
> listen                          /var/tmp/ccFv98I.o
> ld: fatal: Symbol referencing errors. No output written to a.out
> collect2: ld returned 1 exit status.
> $

> Genereert dus geen a.out.. Heeft iemand dit ooit al eens meegemaakt?  Of
> kan iemand me zeggen wat ik verkeerd doe?

Klassieker.  Solaris zet die functies in een shared library, en je kunt er
niet aan als je dynamisch wilt compilen.  Je zult dus een beetje moeten
foefelen.  Zoek de prototypes van de functies die 'undefined' zijn op, en maak
er je eigen library van (ik heb geen Sun bij de hand, je zult dit dus lichtjes
moeten aanpassen):

 stubs.c
 | #include <sys/types.h>
 | #include <sys/socket.h>
 | 
 | /* Trick the compiler into static linking */
 | 
 | int socket(int domain, int type, int protocol) {}
 | int bind(int s, const struct sockaddr *addr, socklen_t addrlen) {}
 | int accept(int s, struct sockaddr *addr, socklen_t *addrlen) {}
 | int listen(int s, int backlog) {}

Die 'stub functions' ga je dan in een object file compilen, en dan kan je
daarmee linken:

 % gcc -c -O2 -g stubs.c
 % gcc -c -O2 -g server.c

 % gcc -static -g -O2 server.o stubs.o -lsocket

Veel geluk!

 - Philip

-- 
Philip Paeps                                                   philip@paeps.cx

  The item you had your eye on the minute you walked in
  will be taken by the person in front of you.
Technical Details
Message-ID: <QV888.120515$rt4.11262@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news-x2.support.nl!newsfeeds.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
References: <Pine.LNX.4.44.0202061107290.255-100000@fooshit.local.net>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,4bd81574145a47cb
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-02-06 04:00:49 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news-x2.support.nl!newsfeeds.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
From: Philip Paeps <philip@paeps.cx>
Subject: Re: static flag in solaris7
Newsgroups: be.comp.programming
References: <Pine.LNX.4.44.0202061107290.255-100000@fooshit.local.net>
User-Agent: tin/1.5.11-20020130 ("Toxicity") (UNIX) (FreeBSD/4.5-STABLE (i386))
Lines: 57
Message-ID: <QV888.120515$rt4.11262@afrodite.telenet-ops.be>
Date: Wed, 06 Feb 2002 12:00:48 GMT
NNTP-Posting-Host: 213.118.35.252
X-Complaints-To: abuse@pandora.be
X-Trace: afrodite.telenet-ops.be 1012996848 213.118.35.252 (Wed, 06 Feb 2002 13:00:48 MET)
NNTP-Posting-Date: Wed, 06 Feb 2002 13:00:48 MET
Organization: Telenet Internet