Re: [v4l-utils PATCH 1/1] Fix static linking of v4l2-compliance and v4l2-ctl

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Mauro,

On Mon, Sep 19, 2016 at 11:19:12AM -0300, Mauro Carvalho Chehab wrote:
> Em Mon, 19 Sep 2016 16:21:30 +0300
> Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> escreveu:
> 
> > Hi Mauro,
> > 
> > On 09/19/16 14:22, Mauro Carvalho Chehab wrote:
> > > Em Mon, 19 Sep 2016 13:50:25 +0300
> > > Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> escreveu:
> > >   
> > >> v4l2-compliance and v4l2-ctl depend on librt and libpthread. The symbols
> > >> are found by the linker only if these libraries are specified after the
> > >> objects that depend on them.
> > >>
> > >> As LDFLAGS variable end up expanded on libtool command line before LDADD,
> > >> move the libraries to LDADD after local objects. -lpthread is added as on
> > >> some systems librt depends on libpthread. This is the case on Ubuntu 16.04
> > >> for instance.
> > >>
> > >> After this patch, creating a static build using the command
> > >>
> > >> LDFLAGS="--static -static" ./configure --disable-shared --enable-static  
> > > 
> > > It sounds weird to use LDFLAGS="--static -static" here, as the
> > > configure options are already asking for static.
> > > 
> > > IMHO, the right way would be to change configure.ac to add those LDFLAGS
> > > when --disable-shared is used.  
> > 
> > That's one option, but then shared libraries won't be built at all.
> 
> Well, my understanding is that  --disable-shared is meant to disable
> building the shared library build :)
> 
> > I'm
> > not sure what would be the use cases for that, though: static linking
> > isn't very commonly needed except when you need to run the binaries
> > elsewhere (for whatever reason) where you don't have the libraries you
> > linked against available.
> 
> Yeah, that's the common usage. It is also interesting if someone
> wants to build 2 versions of the same utility, each using a
> different library, for testing purposes.
> 
> The usecase I can't see is to use --disable-shared but keeping
> using the dynamic library for the exec files.

There are three primary options here,

1. build an entirely static binary,
2. build a binary that relies on dynamic libraries as well and
3. build a binary that relies on dynamic libraries outside v4l-utils package
   but that links v4l-utils originating libraries statically.

If you say 3. is not needed then we could just use --disable-shared also to
tell that static binaries are to be built.

3. is always used for libv4l2subdev and libmediactl as the libraries do not
have stable APIs.

> 
> > That's still a separate issue from what this patch fixes.
> > 
> > Ideally it should be possible to link the binaries statically while
> > still building shared libraries: both are built by default right now,
> > yet shared libraries are always used for linking unless you disable
> > shared libraries.
> 
> Well, the point is: if dynamic library build is disabled, it should
> be doing static links that are produced by the build, instead of using
> an already existing set of dynamic libraries present on the system
> (that may not contain the symbols needed by the tool, or miss some
> patches that were on -git).

No, it uses the static libraries that are built at the same time.

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ailus@xxxxxx	XMPP: sailus@xxxxxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux