Skip to content
This repository has been archived by the owner on Aug 24, 2021. It is now read-only.

Link statically with arrow #12

Open
tebeka opened this issue Apr 3, 2019 · 3 comments
Open

Link statically with arrow #12

tebeka opened this issue Apr 3, 2019 · 3 comments

Comments

@tebeka
Copy link
Member

tebeka commented Apr 3, 2019

Currently we link with arrow shared library:

$ go test -c
$ ldd carrow.test | grep arrow
	libarrow.so.13 => /usr/lib/x86_64-linux-gnu/libarrow.so.13 (0x00007f0acdaee000)

We should statically link with libarrow.a to enable easier distribution, see #11

@tebeka
Copy link
Member Author

tebeka commented Apr 3, 2019

This might be tricker than I thought since arrow uses several other packages which are provided as shared libraries:

$ ldd carrow.test 
	linux-vdso.so.1 (0x00007ffda3d86000)
	libarrow.so.13 => /usr/lib/x86_64-linux-gnu/libarrow.so.13 (0x00007ff3e5222000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff3e5003000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff3e4c7a000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff3e4a62000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff3e4671000)
	libdouble-conversion.so.1 => /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.1 (0x00007ff3e4460000)
	libbrotlienc.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlienc.so.1 (0x00007ff3e41d9000)
	libbrotlidec.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007ff3e3fcd000)
	libglog.so.0 => /usr/lib/x86_64-linux-gnu/libglog.so.0 (0x00007ff3e3d9c000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff3e3b98000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff3e3990000)
	liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007ff3e3774000)
	libsnappy.so.1 => /usr/lib/x86_64-linux-gnu/libsnappy.so.1 (0x00007ff3e356c000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff3e334f000)
	libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007ff3e30d4000)
	libprotobuf.so.10 => /usr/lib/x86_64-linux-gnu/libprotobuf.so.10 (0x00007ff3e2c7b000)
	libboost_system.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 (0x00007ff3e2a76000)
	libboost_filesystem.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 (0x00007ff3e285c000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff3e24be000)
	/lib64/ld-linux-x86-64.so.2 (0x00007ff3e5913000)
	libbrotlicommon.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007ff3e229e000)
	libgflags.so.2.2 => /usr/lib/x86_64-linux-gnu/libgflags.so.2.2 (0x00007ff3e2079000)
	libunwind.so.8 => /usr/lib/x86_64-linux-gnu/libunwind.so.8 (0x00007ff3e1e5e000)
	liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007ff3e1c38000)

boost, lzma, brotli, snappy ...

@yonidavidson
Copy link
Collaborator

  1. we should see what other similar packages do (maybe tensorflow-go is a good example).
  2. I assume that some packages need to be either compiled dynamically or find a way to statically link everything

@yonidavidson
Copy link
Collaborator

According to this https://issues.apache.org/jira/browse/PARQUET-1048
It's now possible, trying to understand.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants