Dialog, libs static linken

Pagina: 1
Acties:

  • dj_dysaster
  • Registratie: Januari 2003
  • Laatst online: 09:01
Voor een project gebruik ik het programmatje dialog (om grafische menus te bouwen met wat shell scripting). Dialog zal echter komen te draaien op meerdere omgevingen waar mogelijk niet alle libs beschikbaar zijn (denk aan ncurses etc).

Nu was mijn idee om daarom de libs static te linken aan dialog, google geeft nou niet echt een duidelijk uitsluitsel hoe dit te doen.

Allereerst heb ik gegeken mbv ldd welke libs er uberhaupt gebruikt worden.
code:
1
2
3
4
5
        linux-gate.so.1 =>  (0xffffe000)
        libncurses.so.5 => /lib/libncurses.so.5 (0xb7ed0000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d86000)
        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7d81000)
        /lib/ld-linux.so.2 (0xb7f1c000)


Deze libs zal ik dus static moeten linken?

Verder had ik gevonden dat ik de libs in een .a file moet stoppen met behulp van ar(archive)?

Is er iemand die hier bekent mee is?

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Volgens mij moet je Dialog compilen met --disable-shared en --enable-static als argumenten voor ./configure

Nu met Land Rover Series 3 en Defender 90


  • dj_dysaster
  • Registratie: Januari 2003
  • Laatst online: 09:01
Sorry vergeten te vermelden, dialog heeft GEEN configure script. Enkel een makefile, welke hier te vinden is. :)


EDIT: na nog wat zoekwerk bleek er nog een nieuwere versie van Dialog beschikbaar, welke wel een configure script heeft. Ik ga is kijken of dat gaat lukken :D

EDIT2: Dit gaat dus niet lukken, ik kan niet achter de goede configureflags komen ;(

[ Voor 44% gewijzigd door dj_dysaster op 19-02-2008 16:51 ]


  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 26-01 20:38
Waarom gebruik je niet cDialog? "Opvolger" van dialog, en nog recent onderhouden. En perfect statisch te compileren, ff het compile script zoeken op mijn dev box.

EDIT: hmm, blijkbaar is het mij toen ook niet gelukt. Ik heb cDialog gewoon gecompileerd (heeft wel degelijk een configure script), en ncurses met shared libraries gecompileerd (./configure --with-shared ). Het leek me alleszinds moeilijk, omdat ncurses een hele boel terminal scripts (terminfo's, oid) aan boord heeft.

[ Voor 50% gewijzigd door maleadt op 19-02-2008 17:34 ]


  • dj_dysaster
  • Registratie: Januari 2003
  • Laatst online: 09:01
MALEADt schreef op dinsdag 19 februari 2008 @ 17:29:
Waarom gebruik je niet cDialog? "Opvolger" van dialog, en nog recent onderhouden. En perfect statisch te compileren, ff het compile script zoeken op mijn dev box.

EDIT: hmm, blijkbaar is het mij toen ook niet gelukt. Ik heb cDialog gewoon gecompileerd (heeft wel degelijk een configure script), en ncurses met shared libraries gecompileerd (./configure --with-shared ). Het leek me alleszinds moeilijk, omdat ncurses een hele boel terminal scripts (terminfo's, oid) aan boord heeft.
Ik ben ook nog even met cDialog bezig geweest, maar ook daarmee (met configure flag --with-libtool-opts=-static) lukt het ook niet, het lijstje libs uit de startpost blijft shared. En op die manier gaat het helaas niet lekker werken in mn initrd omgeving.

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

-static is de flag voor de linker. Even kijken dus hoe dat vanuit het configure-script uiteindelijk terechtkomt bij ld of gcc en dan het aanpassen.

Vaak is dit LDFLAGS of, in een willekeurig configure-script die ik zo had liggen:
code:
1
--enable-static=PKGS  build static libraries default=yes

  • _JGC_
  • Registratie: Juli 2000
  • Nu online
Overigens zijn de libs die je hierboven noemt nagenoeg op elk linux systeem beschikbaar. Alleen bij hele oude bakken (pre-2000 zeg maar) kom je nog oudere libs tegen zoals libncurses.so.4 of libc.so.5, maar in dat laatste geval vraag ik mij af of die systemen ELF binaries kunnen lezen.
Pagina: 1