# pwsafe statisch linken

## Silicoid

Hi

ich möchte pwsafe (http://nsd.dyndns.org/pwsafe/) einsetzen um Passwörter zu verwalten. Der Server, auf dem ich pwsafe einsetzen muß hat leider nicht alle Libraries. Der pwsafe muß aber auf diesem Server laufen, da auch andere darauf zugreifen mußen und das der einzige Server ist, auf den alle Zugruff habe. (Falls mir jemand nen guten Passwordsafe für die Commandline empfehlen kann, nehm ich auch gerne einen anderen).

Jetzt dache ich mir, compilier ich pwsafe einfach auf meinem Gentoo und linke es statisch. Leider gibts bei configure keinen Schalter dafür. Setze ich beim "g++" die Option Static, läßt es sich nicht linken:

```

$ make

g++ -DHAVE_CONFIG_H -I. -I. -I.   -lncurses    -g -O2 -c pwsafe.cpp

g++: -lncurses: linker input file unused because linking not done

g++ -static  -g -O2  -o pwsafe  pwsafe.o  -lSM -lICE -lXmu -lX11 -lreadline -lcurses -lncurses -lcrypto

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libreadline.a(complete.o): In function `rl_username_completion_function':

: warning: Using 'getpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libreadline.a(tilde.o): In function `tilde_expand_word':

: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

pwsafe.o: In function `DB::Entry::Init()':

/home/weigla/tmp/pwsafe-0.2.0/pwsafe.cpp:2900: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libreadline.a(complete.o): In function `rl_username_completion_function':

: warning: Using 'setpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libreadline.a(complete.o): In function `rl_username_completion_function':

: warning: Using 'endpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(x11_trans.o): In function `_X11TransSocketOpen':

: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(x11_trans.o): In function `_X11TransSocketUNIXConnect':

: warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(x11_trans.o): In function `_X11TransSocketINETConnect':

: warning: Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libXmu.a(Atoms.o): In function `XmuMakeAtom':

: undefined reference to `XtMalloc'

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libXmu.a(Atoms.o): In function `XmuInternAtom':

: undefined reference to `XtMalloc'

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(ConnDis.o): In function `_X11TransConnectDisplay':

: undefined reference to `XauDisposeAuth'

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(ConnDis.o): In function `_X11TransConnectDisplay':

: undefined reference to `XauGetBestAuthByAddr'

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(ConnDis.o): In function `_X11TransConnectDisplay':

: undefined reference to `XdmcpWrap'

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(XlibInt.o): In function `_XProcessInternalConnection':

: undefined reference to `pthread_equal'

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(XlibInt.o): In function `_XEventsQueued':

: undefined reference to `pthread_equal'

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(XlibInt.o): In function `_XEventsQueued':

: undefined reference to `pthread_equal'

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(XlibInt.o): In function `_XEventsQueued':

: undefined reference to `pthread_equal'

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(XlibInt.o): In function `_XEventsQueued':

: undefined reference to `pthread_equal'

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libX11.a(XlibInt.o):: more undefined references to `pthread_equal' follow

collect2: ld returned 1 exit status

make: *** [pwsafe] Error 1

```

Kann mir jemand einen Tip geben. C und Linken sind nicht gerade meine stärken.

----------

## think4urs11

da du auch nach einer Alternative gefragt hast: https://forums.gentoo.org/viewtopic-p-3506737.html#3506737

----------

## Silicoid

 *Think4UrS11 wrote:*   

> da du auch nach einer Alternative gefragt hast: https://forums.gentoo.org/viewtopic-p-3506737.html#3506737

 

Sieht nich mal schlecht aus. Allerdings gibts 2 Probleme:

1. Wie bau ich das dann statisch? Hab auch hier bei configure nichts gefunden. (Steht auch noch auf der Todo)

2. Zumindest die aktuelle Version läßt sich nicht auf meinem Gentoo bauen:

```

$ make

gcc -g -O2 -DGPGME_HAS_RECIPIENT  -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -I/usr/include/gpgme -I/usr/include/libxml2 -std=c89 -pedantic -Wall -DLOCALEDIR='"/usr/local/share/locale"' -DCDK_VERSION_5 -c cpm.c

gcc -g -O2 -DGPGME_HAS_RECIPIENT  -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -I/usr/include/gpgme -I/usr/include/libxml2 -std=c89 -pedantic -Wall -DLOCALEDIR='"/usr/local/share/locale"' -DCDK_VERSION_5 -c configuration.c

gcc -g -O2 -DGPGME_HAS_RECIPIENT  -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -I/usr/include/gpgme -I/usr/include/libxml2 -std=c89 -pedantic -Wall -DLOCALEDIR='"/usr/local/share/locale"' -DCDK_VERSION_5 -c general.c

general.c: In function createPassword:

general.c:182: error: CRACKLIB_DICTPATH undeclared (first use in this function)

general.c:182: error: (Each undeclared identifier is reported only once

general.c:182: error: for each function it appears in.)

general.c: In function isGoodPassword:

general.c:475: error: CRACKLIB_DICTPATH undeclared (first use in this function)

make: *** [general.o] Error 1

```

----------

