diff mbox

[v4l-utils,1/1] Allow building static binaries

Message ID 1449587901-12784-1-git-send-email-sakari.ailus@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Sakari Ailus Dec. 8, 2015, 3:18 p.m. UTC
$ LDFLAGS="--static -static" ./configure --enable-static
	$ LDFLAGS=-static make

can be used to create static binaries. The issue was that shared libraries
were attempted to link statically which naturally failed.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 lib/libv4l1/Makefile.am | 3 +--
 lib/libv4l2/Makefile.am | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

Comments

Sakari Ailus Dec. 10, 2015, 1:21 p.m. UTC | #1
Hi Gregor,

I discussed with Hans and he thought you'd be the best person to take a look
at this.

The case is that I'd like to build static binaries and that doesn't seem to
work with what's in Makefile.am for libv4l1 and libv4l2 at the moment.

Thanks.

On Tue, Dec 08, 2015 at 05:18:21PM +0200, Sakari Ailus wrote:
> 	$ LDFLAGS="--static -static" ./configure --enable-static
> 	$ LDFLAGS=-static make
> 
> can be used to create static binaries. The issue was that shared libraries
> were attempted to link statically which naturally failed.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
>  lib/libv4l1/Makefile.am | 3 +--
>  lib/libv4l2/Makefile.am | 3 +--
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/lib/libv4l1/Makefile.am b/lib/libv4l1/Makefile.am
> index 005ae10..c325390 100644
> --- a/lib/libv4l1/Makefile.am
> +++ b/lib/libv4l1/Makefile.am
> @@ -23,7 +23,6 @@ libv4l1_la_LIBADD = ../libv4l2/libv4l2.la
>  v4l1compat_la_SOURCES = v4l1compat.c
>  
>  v4l1compat_la_LIBADD = libv4l1.la
> -v4l1compat_la_LDFLAGS = -avoid-version -module -shared -export-dynamic
> -v4l1compat_la_LIBTOOLFLAGS = --tag=disable-static
> +v4l1compat_la_LDFLAGS = -avoid-version -module -export-dynamic
>  
>  EXTRA_DIST = libv4l1-kernelcode-license.txt
> diff --git a/lib/libv4l2/Makefile.am b/lib/libv4l2/Makefile.am
> index b6f4d3b..878ccd9 100644
> --- a/lib/libv4l2/Makefile.am
> +++ b/lib/libv4l2/Makefile.am
> @@ -22,7 +22,6 @@ libv4l2_la_LIBADD = ../libv4lconvert/libv4lconvert.la
>  
>  v4l2convert_la_SOURCES = v4l2convert.c
>  v4l2convert_la_LIBADD = libv4l2.la
> -v4l2convert_la_LDFLAGS = -avoid-version -module -shared -export-dynamic
> -v4l2convert_la_LIBTOOLFLAGS = --tag=disable-static
> +v4l2convert_la_LDFLAGS = -avoid-version -module -export-dynamic
>  
>  EXTRA_DIST = Android.mk v4l2-plugin-android.c
> -- 
> 2.1.0.231.g7484e3b
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Gregor Jasny Dec. 16, 2015, 8:21 p.m. UTC | #2
Hello,

On 10/12/15 14:21, Sakari Ailus wrote:
> I discussed with Hans and he thought you'd be the best person to take a look
> at this.
> 
> The case is that I'd like to build static binaries and that doesn't seem to
> work with what's in Makefile.am for libv4l1 and libv4l2 at the moment.

Sorry for the late reply. Didi not notice this email earlier. Your patch
does not do what you'd like to achieve. Both v4l1compat and v4l2convert
are libraries which only purpose is to get preloaded by the loader. So
build them statically does not make sense. Instead they should not be
built at all. To achieve this the WITH_V4L_WRAPPERS variable should
evaluate to false. This is triggered by

AM_CONDITIONAL([WITH_V4L_WRAPPERS], [test x$enable_libv4l != xno -a
x$enable_shared != xno])

So changing

LDFLAGS="--static -static" ./configure --enable-static

to

LDFLAGS="--static -static" ./configure --enable-static --disabled-shared

should do the trick. Does this help?

Thanks,
Gregor


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sakari Ailus Dec. 21, 2015, 12:45 p.m. UTC | #3
Hi Gregor,

On Wed, Dec 16, 2015 at 09:21:16PM +0100, Gregor Jasny wrote:
> Hello,
> 
> On 10/12/15 14:21, Sakari Ailus wrote:
> > I discussed with Hans and he thought you'd be the best person to take a look
> > at this.
> > 
> > The case is that I'd like to build static binaries and that doesn't seem to
> > work with what's in Makefile.am for libv4l1 and libv4l2 at the moment.
> 
> Sorry for the late reply. Didi not notice this email earlier. Your patch
> does not do what you'd like to achieve. Both v4l1compat and v4l2convert
> are libraries which only purpose is to get preloaded by the loader. So
> build them statically does not make sense. Instead they should not be
> built at all. To achieve this the WITH_V4L_WRAPPERS variable should
> evaluate to false. This is triggered by
> 
> AM_CONDITIONAL([WITH_V4L_WRAPPERS], [test x$enable_libv4l != xno -a
> x$enable_shared != xno])
> 
> So changing
> 
> LDFLAGS="--static -static" ./configure --enable-static
> 
> to
> 
> LDFLAGS="--static -static" ./configure --enable-static --disabled-shared
> 
> should do the trick. Does this help?

It does. I get statically linked binaries now without changes. Thank you,
Gregor!

Hans, Mauro, please ignore the patch.
diff mbox

Patch

diff --git a/lib/libv4l1/Makefile.am b/lib/libv4l1/Makefile.am
index 005ae10..c325390 100644
--- a/lib/libv4l1/Makefile.am
+++ b/lib/libv4l1/Makefile.am
@@ -23,7 +23,6 @@  libv4l1_la_LIBADD = ../libv4l2/libv4l2.la
 v4l1compat_la_SOURCES = v4l1compat.c
 
 v4l1compat_la_LIBADD = libv4l1.la
-v4l1compat_la_LDFLAGS = -avoid-version -module -shared -export-dynamic
-v4l1compat_la_LIBTOOLFLAGS = --tag=disable-static
+v4l1compat_la_LDFLAGS = -avoid-version -module -export-dynamic
 
 EXTRA_DIST = libv4l1-kernelcode-license.txt
diff --git a/lib/libv4l2/Makefile.am b/lib/libv4l2/Makefile.am
index b6f4d3b..878ccd9 100644
--- a/lib/libv4l2/Makefile.am
+++ b/lib/libv4l2/Makefile.am
@@ -22,7 +22,6 @@  libv4l2_la_LIBADD = ../libv4lconvert/libv4lconvert.la
 
 v4l2convert_la_SOURCES = v4l2convert.c
 v4l2convert_la_LIBADD = libv4l2.la
-v4l2convert_la_LDFLAGS = -avoid-version -module -shared -export-dynamic
-v4l2convert_la_LIBTOOLFLAGS = --tag=disable-static
+v4l2convert_la_LDFLAGS = -avoid-version -module -export-dynamic
 
 EXTRA_DIST = Android.mk v4l2-plugin-android.c