Article View: be.comp.programming
Article #11473Re: static flag in solaris7
From: Philip Paeps
Date: Wed, 06 Feb 2002 12:00
Date: Wed, 06 Feb 2002 12:00
57 lines
3007 bytes
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-mailReferences:
<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