Support for position-independent code generation (linking static boost libraries into shared libraries with -fPIC)
- Lingua principale
- C++
- Stelle
- 251
- Fork
- 63
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
From a discussion in Boost.Serialization and on the mailing list, it was understood that the gcc compiler jam enables `-fPIC` if linking shared. Another use case is linking static, but then incorporating that into a shared library. On some platform/compiler combinations this requires special treatment, for example with linux and gcc or clang, `-fPIC` is required to enable this to work.
From the mailing list I received advice on testing for -fPIC support in the compiler and then enabling it on a given project. @pdimov suggested that to do it properly would require some work in Boost.Build, but I think it's worth the effort.
> Steven Watanabe wrote:
> ...
>
> > import flags ;
> > project
> > : requirements
> > [ check-has-flag -fPIC : -fPIC ]
> > ;
> >
> > Note 1: The documentation for this is only in
> > `b2 --help flags.check-has-flag`. It isn't
> > integrated into the html docs yet.
> >
> > Note 2: This is pretty new, so if you run into
> > any problems, please let me know.
> >
> > Note 3: It might be more reliable to separate
> > the object files out and set shared on them:
> > obj x.o : x.cpp : shared ;
> > ...
> > lib l : x.o y.o ... ;
> > (This will only work if the library is one
> > that is specifically built for the test, not
> > if it's a generic Boost library.)
>
> Note 4: (from @pdimov)
>
> **This should probably be a feature, like `on`, which
> toolsets translate to -fPIC as appropriate.**
>
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.