Build of static mumble 1.2.18 64bit failed #1089

Closed
opened 2026-02-20 20:00:46 -05:00 by deekerman · 13 comments
Owner

Originally created by @karstengit on GitHub (Jan 6, 2017).

The version of mumble that i have compiled as regular version can be started.
So i would say everything that is needed to run mumble and murmur is installed within my Debian Jessie system.

But trying to compile a static version failed.
This time i have no idea what is missing?

make[2]: Entering directory '/srv/test/mumble/mumble/src/murmur'
g++ -m64 -std=c++98 -Wl,-z,relro -Wl,-z,now -static -Wl,-O1 -o ../../release/murmurd release/ACL.o release/Group.o release/Channel.o release/Connection.o release/HTMLFilter.o release/User.o release/Timer.o release/CryptState.o release/OSInfo.o release/Net.o release/SSL.o release/Version.o release/SSLCipherInfo.o release/License.o release/LogEmitter.o release/main.o release/Server.o release/ServerUser.o release/ServerDB.o release/Register.o release/Cert.o release/Messages.o release/Meta.o release/RPC.o release/PBKDF2.o release/UnixMurmur.o release/DBus.o release/MurmurIce.o release/BonjourServiceRegister.o release/BonjourServer.o release/moc_ACL.o release/moc_Channel.o release/moc_Connection.o release/moc_LogEmitter.o release/moc_Server.o release/moc_ServerUser.o release/moc_Meta.o release/moc_UnixMurmur.o release/moc_DBus.o release/moc_MurmurIce.o release/moc_BonjourServiceRegister.o release/moc_BonjourServer.o -L../../release -L/opt/Ice-3.3/lib -L/usr/lib/x86_64-linux-gnu -lmumble_proto -lcap -lIce -lIceUtil -lbz2 -lmurmur_ice -lprotobuf -pthread -lz -lssl -lcrypto -ldl -ldns_sd -lavahi-common -lavahi-client -lpthread -lQtDBus -lQtSql -lQtXml -lQtNetwork -lQtCore
/usr/bin/ld: cannot find -lIce
/usr/bin/ld: cannot find -lIceUtil
release/SSL.o: In function MumbleSSL::qsslSanityCheck()': SSL.cpp:(.text+0x1e5): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: cannot find -lQtDBus /usr/bin/ld: cannot find -lQtSql /usr/bin/ld: cannot find -lQtXml /usr/bin/ld: cannot find -lQtNetwork /usr/bin/ld: cannot find -lQtCore release/UnixMurmur.o: In function UnixMurmur::setuid()':
UnixMurmur.cpp:(.text+0x748): warning: Using 'initgroups' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
release/Meta.o: In function `MetaParams::read(QString)':
Meta.cpp:(.text+0x4623): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
Meta.cpp:(.text+0x46ba): warning: Using 'endpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
collect2: error: ld returned 1 exit status
Makefile.Release:199: recipe for target '../../release/murmurd' failed
make[2]: *** [../../release/murmurd] Error 1
make[2]: Leaving directory '/srv/test/mumble/mumble/src/murmur'
Makefile:34: recipe for target 'release' failed
make[1]: *** [release] Error 2
make[1]: Leaving directory '/srv/test/mumble/mumble/src/murmur'
Makefile:335: recipe for target 'sub-src-murmur-make_default-ordered' failed
make: *** [sub-src-murmur-make_default-ordered] Error 2

Originally created by @karstengit on GitHub (Jan 6, 2017). The version of mumble that i have compiled as regular version can be started. So i would say everything that is needed to run mumble and murmur is installed within my Debian Jessie system. But trying to compile a static version failed. This time i have no idea what is missing? make[2]: Entering directory '/srv/test/mumble/mumble/src/murmur' g++ -m64 -std=c++98 -Wl,-z,relro -Wl,-z,now -static -Wl,-O1 -o ../../release/murmurd release/ACL.o release/Group.o release/Channel.o release/Connection.o release/HTMLFilter.o release/User.o release/Timer.o release/CryptState.o release/OSInfo.o release/Net.o release/SSL.o release/Version.o release/SSLCipherInfo.o release/License.o release/LogEmitter.o release/main.o release/Server.o release/ServerUser.o release/ServerDB.o release/Register.o release/Cert.o release/Messages.o release/Meta.o release/RPC.o release/PBKDF2.o release/UnixMurmur.o release/DBus.o release/MurmurIce.o release/BonjourServiceRegister.o release/BonjourServer.o release/moc_ACL.o release/moc_Channel.o release/moc_Connection.o release/moc_LogEmitter.o release/moc_Server.o release/moc_ServerUser.o release/moc_Meta.o release/moc_UnixMurmur.o release/moc_DBus.o release/moc_MurmurIce.o release/moc_BonjourServiceRegister.o release/moc_BonjourServer.o -L../../release -L/opt/Ice-3.3/lib -L/usr/lib/x86_64-linux-gnu -lmumble_proto -lcap -lIce -lIceUtil -lbz2 -lmurmur_ice -lprotobuf -pthread -lz -lssl -lcrypto -ldl -ldns_sd -lavahi-common -lavahi-client -lpthread -lQtDBus -lQtSql -lQtXml -lQtNetwork -lQtCore /usr/bin/ld: cannot find -lIce /usr/bin/ld: cannot find -lIceUtil release/SSL.o: In function `MumbleSSL::qsslSanityCheck()': SSL.cpp:(.text+0x1e5): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: cannot find -lQtDBus /usr/bin/ld: cannot find -lQtSql /usr/bin/ld: cannot find -lQtXml /usr/bin/ld: cannot find -lQtNetwork /usr/bin/ld: cannot find -lQtCore release/UnixMurmur.o: In function `UnixMurmur::setuid()': UnixMurmur.cpp:(.text+0x748): warning: Using 'initgroups' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking release/Meta.o: In function `MetaParams::read(QString)': Meta.cpp:(.text+0x4623): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking Meta.cpp:(.text+0x46ba): warning: Using 'endpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking collect2: error: ld returned 1 exit status Makefile.Release:199: recipe for target '../../release/murmurd' failed make[2]: *** [../../release/murmurd] Error 1 make[2]: Leaving directory '/srv/test/mumble/mumble/src/murmur' Makefile:34: recipe for target 'release' failed make[1]: *** [release] Error 2 make[1]: Leaving directory '/srv/test/mumble/mumble/src/murmur' Makefile:335: recipe for target 'sub-src-murmur-make_default-ordered' failed make: *** [sub-src-murmur-make_default-ordered] Error 2
Author
Owner

@mkrautz commented on GitHub (Jan 6, 2017):

Seems like you're missing static Ice libs?

Anyway, we don't really use or test CONFIG(static) for Murmur on Linux. On Linux, we distribute a dynamic Murmur packed with Magic Ermine.

@mkrautz commented on GitHub (Jan 6, 2017): Seems like you're missing static Ice libs? Anyway, we don't really use or test CONFIG(static) for Murmur on Linux. On Linux, we distribute a dynamic Murmur packed with Magic Ermine.
Author
Owner

@karstengit commented on GitHub (Jan 6, 2017):

Sorry, I have no idea what is needed to build the package, because there is no description for it.

How Magic Ermine should be used?

I will have a look at the existant Debian packages.
Maybe i can extrapolate how this release have to be installed regulary.

@karstengit commented on GitHub (Jan 6, 2017): Sorry, I have no idea what is needed to build the package, because there is no description for it. How Magic Ermine should be used? I will have a look at the existant Debian packages. Maybe i can extrapolate how this release have to be installed regulary.
Author
Owner

@mkrautz commented on GitHub (Jan 6, 2017):

I am not sure why you're building a static version if you want the equivalent of the Debian packages. Those aren't static.

Could you please explain what you're trying to achieve? Thanks!

@mkrautz commented on GitHub (Jan 6, 2017): I am not sure why you're building a static version if you want the equivalent of the Debian packages. Those aren't static. Could you please explain what you're trying to achieve? Thanks!
Author
Owner

@karstengit commented on GitHub (Jan 6, 2017):

The static package of the client is interesting until i can make a deb package for regular installation.
Up to now i have the compiled files, but i can't distribute them to other clients.

@karstengit commented on GitHub (Jan 6, 2017): The static package of the client is interesting until i can make a deb package for regular installation. Up to now i have the compiled files, but i can't distribute them to other clients.
Author
Owner

@karstengit commented on GitHub (Jan 6, 2017):

I could build packages for Debian Jessie (stable) now.

They can be downloaded here:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=850433
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=850434

@karstengit commented on GitHub (Jan 6, 2017): I could build packages for Debian Jessie (stable) now. They can be downloaded here: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=850433 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=850434
Author
Owner

@mkrautz commented on GitHub (Jan 19, 2017):

I'll close this for now.

We don't support building Mumble statically on Linux.

We'd like to support AppImage/FlatPak/snaps in the future.

@mkrautz commented on GitHub (Jan 19, 2017): I'll close this for now. We don't support building Mumble statically on Linux. We'd like to support AppImage/FlatPak/snaps in the future.
Author
Owner

@karstengit commented on GitHub (Jan 20, 2017):

Then please update the documentation to avoid misunderstanding.

@karstengit commented on GitHub (Jan 20, 2017): Then please update the documentation to avoid misunderstanding.
Author
Owner

@mkrautz commented on GitHub (Jan 20, 2017):

@karstengit The documentation doesn't say we support it. Where did you get that impression?

@mkrautz commented on GitHub (Jan 20, 2017): @karstengit The documentation doesn't say we support it. Where did you get that impression?
Author
Owner

@lexesv commented on GitHub (Mar 1, 2017):

Sorry for the reopening of the issue, but I was able to build a statically linking Murmurd .
I busied this recently, so it requires a lot of improvements.
https://github.com/lexesv/static-murmurd
Perhaps you may be interested.
Built at Alpine Linux x86_64, and checked on Debian 8 x86_64.

@lexesv commented on GitHub (Mar 1, 2017): Sorry for the reopening of the issue, but I was able to build a statically linking Murmurd . I busied this recently, so it requires a lot of improvements. https://github.com/lexesv/static-murmurd Perhaps you may be interested. Built at Alpine Linux x86_64, and checked on Debian 8 x86_64.
Author
Owner

@mkrautz commented on GitHub (Mar 1, 2017):

@lexesv

Hi! We're very interested.

Maybe you're interested in getting the recipes included in mumble-releng?

For our binary builds, we use the build environments in mumble-releng.
They allow us to use the 100% same dependencies on all OSes. All dependencies have the same patches applied across OSes. This ensures our builds are as similar as they possibly can be, and it also allows us to promptly respond to security problems in dependencies across all OSes.

Right now, the "static" builds we have on mumble.info are built via https://github.com/mumble-voip/mumble-releng/tree/master/buildenv/1.3.x/centos-ermine
It produces are shared murmurd, and is packed (along with all deps) via Margic Ermine to produce a single binary that works across a wide variety of distros. It's not really static, but for end users, it's mostly close enough.

I'd be happy to have your Alpine-based static build be another environment in mumble-releng. That way we could ensure all the deps match up, and so on.
However, I'd be wary of doing official builds via the environment until we can provide good reproducibility of the environment. That is, preferably, building the "static" environment would produce the same build each time, regardless of the packages installed on your Alpine system. In practice, that'd mean we'd have to build all dependencies from source. This is what we do already for centos-ermine.
Of course, the static environment wouldn't need to do that from the start, but I'd like to end up there at one point. :-)

Thanks

@mkrautz commented on GitHub (Mar 1, 2017): @lexesv Hi! We're very interested. Maybe you're interested in getting the recipes included in mumble-releng? For our binary builds, we use the build environments in mumble-releng. They allow us to use the 100% same dependencies on all OSes. All dependencies have the same patches applied across OSes. This ensures our builds are as similar as they possibly can be, and it also allows us to promptly respond to security problems in dependencies across all OSes. Right now, the "static" builds we have on mumble.info are built via https://github.com/mumble-voip/mumble-releng/tree/master/buildenv/1.3.x/centos-ermine It produces are shared murmurd, and is packed (along with all deps) via Margic Ermine to produce a single binary that works across a wide variety of distros. It's not really static, but for end users, it's mostly close enough. I'd be happy to have your Alpine-based static build be another environment in mumble-releng. That way we could ensure all the deps match up, and so on. However, I'd be wary of doing official builds via the environment until we can provide good reproducibility of the environment. That is, preferably, building the "static" environment would produce the same build each time, regardless of the packages installed on your Alpine system. In practice, that'd mean we'd have to build all dependencies from source. This is what we do already for centos-ermine. Of course, the static environment wouldn't need to do that from the start, but I'd like to end up there at one point. :-) Thanks
Author
Owner

@lexesv commented on GitHub (Mar 1, 2017):

Hi!

Thank you for interested.

First, I need to do a complete build (currently CONFIG + = "static no-bonjour no-dbus no-client")
There are task to build a 32 bit version.
After I try to create an environment in which to build Murmur, regardless of packages installed in the OS.
But for me the difficulty is, what tools (Qt, Zeroc, etc) will be updated for new versions of Mumble. They require new deps and those require more... :)

Another bad thing is that the file size of the output is more than 60Mb (12,8Mb in 7zip).
Ermine creates less. If packing UPX - segfault or illegal instruction.
https://github.com/lexesv/static-murmurd/blob/master/distro/murmurd.linux.x64.7z

Also, I had to change the file SSL.cpp.
Because function void MumbleSSL::qsslSanityCheck() checks the dynamic load OpenSSL, which in statically linking can not be.
https://github.com/lexesv/static-murmurd/blob/master/script/murmurd.sh

PS . Sorry for my bad English)

@lexesv commented on GitHub (Mar 1, 2017): Hi! Thank you for interested. First, I need to do a complete build (currently CONFIG + = "static no-bonjour no-dbus no-client") There are task to build a 32 bit version. After I try to create an environment in which to build Murmur, regardless of packages installed in the OS. But for me the difficulty is, what tools (Qt, Zeroc, etc) will be updated for new versions of Mumble. They require new deps and those require more... :) Another bad thing is that the file size of the output is more than 60Mb (12,8Mb in 7zip). Ermine creates less. If packing UPX - segfault or illegal instruction. https://github.com/lexesv/static-murmurd/blob/master/distro/murmurd.linux.x64.7z Also, I had to change the file SSL.cpp. Because function void MumbleSSL::qsslSanityCheck() checks the dynamic load OpenSSL, which in statically linking can not be. https://github.com/lexesv/static-murmurd/blob/master/script/murmurd.sh PS . Sorry for my bad English)
Author
Owner

@karstengit commented on GitHub (Mar 2, 2017):

Thank you for the solution lexesv.

@karstengit commented on GitHub (Mar 2, 2017): Thank you for the solution lexesv.
Author
Owner

@lexesv commented on GitHub (Mar 2, 2017):

@karstengit
You are welcome. If you have any questions, please contact.

@lexesv commented on GitHub (Mar 2, 2017): @karstengit You are welcome. If you have any questions, please contact.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/mumble-mumble-voip#1089
No description provided.