Thanks a lot for the detailed explanation to both Greg and Ian. Everything is 
more clear now :).

Cheers,
Oguz

> Oguz Akyuz wrote:
> > Hello,
> >
> > I would like to distribute my application and therefore I would like
> > to create a statically linked executable (to the extent possible)
> > to minimize dependency problems.
> >
> > I'm able to link everything statically except -X11 and -lpthread.
> > Trying to statically link these is causing me serious headache.
>
>       Like you, I don't usually statically link those. These are libs that
>       end users are likely to have on their systems, so they should be there.
>
>       For linux, the only libs I link statically are the fltk libs,
>       eg. libfltk.a, libfltk_png.a, libfltk_jpeg.a, etc.
>
>       Sometimes I'll include libstdc++.so.# with the binary, so that
>       if the end user doesn't have the right one, it can be installed
>       to make the app work.
>
> > Based on the expertise of the people who distributed their applications
> > before does this sound good enough?
>
>       It sounds OK to me.
>
>       I've been releasing distros for linux for the last decade and
>       that's been working for me. My end users have a variety of linux
>       platforms that go all over the map, from redhat7.3 on to the latest.
>
> > Perhaps a more general question -- am I following the right way by trying
> > to statically link everything or is there a better way?
>
>       Seems OK to me.
>
>       Under linux, when there's libs I want to statically link,
>       I just specify the absolute path to the .a files, and those
>       get statically linked. I don't use any special flags.
>
>       So an actual production link command on fedora3:
>
> g++ myapp.o \
>         /path/to/fltk/libfltk_images.a \
>         /path/to/fltk/libfltk.a \
>       /path/to/fltk/libfltk_png.a \
>       /path/to/fltk/libfltk_jpeg.a \
>       /path/to/fltk/libfltk_z.a \
>       -L/usr/X11R6/lib -lXext -lXft -lfontconfig -lpthread -ldl -lm -lX11 -o 
> myapp
>
>       In some cases I include .so's as part of the distro.. I think
>       the only one I've ever needed was libstdc++.so.#
>
>       When you statically link libs, the concern is with is the ABI..
>       is the code you've statically linked compatible with the end user's
>       operating system calls, whose arguments might change during big
>       kernel releases, or X windows releases. Often there are complaints
>       about the GCC versions being different.
>
>       In such cases I release separate binaries, compiling on a platform
>       that is compatible with the most end user target platforms possible,
>       which I find by research, and by empirical tests. To test, I have a
>       slew of removable drives, each with different OS install, and I test
>       on each to watch for errors.
>
>       Sometimes end users will run my apps on newer OS's I didn't have
>       at the time of testing for that release, and often it still works
>       fine. When it doesn't I make a separate build for that platform.

_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to