Open nyxnor opened 2 years ago
It looks like some of the things that libzmq depends on are not being linked. Things such as -lsodium
and others. You may try and see if you can get it to link by manually cutting/pasting the final link command that fails into your terminal and seeing if you can add things to it to get it to work... (things such as -lsodium
). If that succeeds then figure out how to get those extra libs added to the build line.
You are right in that I have not done the best of jobs in describing exactly what the dependencies are for building. The reason for this is that the dependencies expanded over time and I neglected to go back and update readme files.
You did a great job in figuring out what they might be.
If you like, after you are done and have successfully trouble-shot this, you can try composing a guide for people or suggesting what I must change in the readmes, etc?
Note I actually work on macos currently as my dev system, and I use MacPorts, so I don't always do the best of jobs at describing to Linux users what they need to do on their systems. MacPorts package manager sometimes has the same package names as, say, Debian based systems, but sometimes it doesn't.
Anyway I will look at your message here in more detail and see if I can come up with a better build guide for people... especially one specific to e.g. Ubuntu and/or Debian which seems to be the most popular thing these days...
It looks like some of the things that libzmq depends on are not being linked. Things such as -lsodium and others. You may try and see if you can get it to link by manually cutting/pasting the final link command that fails into your terminal and seeing if you can add things to it to get it to work... (things such as -lsodium ). If that succeeds then figure out how to get those extra libs added to the build line.
Thanks for the reply. Ok, seeing the log again, I found these missing dependencies, let me try again:
libpgm-dev
libsodium-dev
libsnappy-dev
liblz4-dev
$ apt list --installed libpgm-dev libsodium-dev libsnappy-dev liblz4-dev
Listing... Done
libpgm-dev/stable,now 5.3.128~dfsg-2 amd64 [installed,automatic]
libsodium-dev/stable,now 1.0.18-1 amd64 [installed,automatic]
so libsodium and libpgm was already installed actually, but they probably need to be linked.
also something wrong with zmq
as can be seen on the log, but don't know yet as I actually linked it. Do you know what is the zmq
issue?
If you like, after you are done and have successfully trouble-shot this, you can try composing a guide for people or suggesting what I must change in the readmes, etc?
Of course, will do after this works, maybe even an installation script.
Note I actually work on macos currently as my dev system, and I use MacPorts, so I don't always do the best of jobs at describing to Linux users what they need to do on their systems. MacPorts package manager sometimes has the same package names as, say, Debian based systems, but sometimes it doesn't.
I understand it is difficult to find compatibility and requirements for different systems.
The process is tiresome, what I did to find the best versions was doing apt search PKG
and reading the output, then selecting package and using apt show PKG
to read the
description to see if that is what is need. But once this is finished, next updates will be easier as few packages will be added I guess.
Could you please explain better why moving the ssl libraries libcrypto*.so out of the way?
And should I specify the -lcrypto
or -lssl
with qmake?
Checked out at the las commit as of now cfd484c6f1447a8547eeccbfdd0e99c2a9983f79
$ qmake6 ../Fulcrum.pro "CONFIG-=debug" "CONFIG+=release" "LIBS+=-L/tmp/fulcrum-build/lib/rocksdb -lrocksdb -lz -lbz2 -L/tmp/fulcrum-build/lib/jemalloc -ljemalloc -L/tmp/fulcrum-build/lib/zmq -lzmq -L/tmp/fulcrum-build/lib/zstd -lzstd -L/usr/lib/x86_64-linux-gnu -lgssapi_krb5 -L/tmp/fulcrum-build/lib/sodium -lsodium -L/tmp/fulcrum-build/lib/lz4 -llz4 -L/tmp/fulcrum-build/lib/pgm -lpgm -L/tmp/fulcrum-build/lib/snappy -lsnappy" "INCLUDEPATH+=/usr/include"
Info: creating stash file /home/user/fulcrum/build/.qmake.stash
Project MESSAGE: CLI overrides: LIBS=-L/tmp/fulcrum-build/lib/rocksdb -lrocksdb -lz -lbz2 -L/tmp/fulcrum-build/lib/jemalloc -ljemalloc -L/tmp/fulcrum-build/lib/zmq -lzmq -L/tmp/fulcrum-build/lib/zstd -lzstd -L/usr/lib/x86_64-linux-gnu -lgssapi_krb5 -L/tmp/fulcrum-build/lib/sodium -lsodium -L/tmp/fulcrum-build/lib/lz4 -llz4 -L/tmp/fulcrum-build/lib/pgm -lpgm -L/tmp/fulcrum-build/lib/snappy -lsnappy
Project MESSAGE: CLI overrides: INCLUDEPATH=/usr/include
Info: creating cache file /home/user/fulcrum/build/.qmake.cache
Checking for builtin_clzl... yes
Checking for builtin_clzll... yes
Checking for endian_big... no
Checking for endian_little... yes
Project MESSAGE: ZMQ: using CLI override
Project MESSAGE: rocksdb: using CLI override
Project MESSAGE: jemalloc: using CLI override
Project MESSAGE: Including embedded secp256k1
Project MESSAGE: Installation dir prefix is /usr/local
Things are getting better, just zmq
missing something now.
build error log:
g++ -Wl,-O1 -o Fulcrum AbstractConnection.o App.o BTC.o BTC_Address.o BitcoinD.o BitcoinD_RPCInfo.o BlockProc.o CityHash.o Common.o Controller.o Controller_SynchDSPsTask.o CoTask.o DSProof.o Json.o Json_Parser.o tests.o Logger.o main.o Mempool.o Merkle.o Mixins.o Mgr.o Options.o PeerMgr.o RecordFile.o RollingBloomFilter.o RPC.o RPCMsgId.o ServerMisc.o Servers.o SrvMgr.o Storage.o SSLCertMonitor.o SubsMgr.o SubStatus.o ThreadPool.o TXO.o Util.o VarInt.o Version.o WebSocket.o ZmqSubNotifier.o register_MetaTypes.o amount.o base58.o block.o cleanse.o cashaddr.o cashaddrenc.o aes.o chacha20.o ctaes.o hmac_sha256.o hmac_sha512.o ripemd160.o sha1.o sha256.o sha256_sse4.o sha512.o hash.o interpreter.o pubkey.o script.o script_error.o script_standard.o sigencoding.o test.o token.o transaction.o uint256.o utilstrencodings.o utilstring.o secp256k1.o qrc_resources.o moc_AbstractConnection.o moc_App.o moc_BitcoinD.o moc_Controller.o moc_Logger.o moc_Mgr.o moc_PeerMgr.o moc_RPC.o moc_Servers.o moc_SrvMgr.o moc_SSLCertMonitor.o moc_SubsMgr.o moc_ThreadPool.o moc_WebSocket.o moc_ZmqSubNotifier.o -L/tmp/fulcrum-build/lib/rocksdb -lrocksdb -lz -lbz2 -L/tmp/fulcrum-build/lib/jemalloc -ljemalloc -L/tmp/fulcrum-build/lib/zmq -lzmq -L/tmp/fulcrum-build/lib/zstd -lzstd -L/usr/lib/x86_64-linux-gnu -lgssapi_krb5 -L/tmp/fulcrum-build/lib/sodium -lsodium -L/tmp/fulcrum-build/lib/lz4 -llz4 -L/tmp/fulcrum-build/lib/pgm -lpgm -L/tmp/fulcrum-build/lib/snappy -lsnappy -ldl /usr/lib/x86_64-linux-gnu/libQt6Network.so /usr/lib/x86_64-linux-gnu/libQt6Core.so -lpthread
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-norm_engine.o): warning: relocation against `NORM_SESSION_INVALID' in read-only section `.text'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-ws_engine.o): in function `zmq::ws_engine_t::server_handshake()':
(.text+0x1a01): undefined reference to `strlcpy'
/usr/bin/ld: (.text+0x1a55): undefined reference to `strlcpy'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-ws_engine.o): in function `zmq::ws_engine_t::client_handshake()':
(.text+0x240c): undefined reference to `strlcpy'
/usr/bin/ld: (.text+0x2433): undefined reference to `strlcpy'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-norm_engine.o): in function `zmq::norm_engine_t::init(char const*, bool, bool)':
(.text+0x541): undefined reference to `NORM_NODE_ANY'
/usr/bin/ld: (.text+0x663): undefined reference to `NORM_INSTANCE_INVALID'
/usr/bin/ld: (.text+0x67a): undefined reference to `NormCreateSession'
/usr/bin/ld: (.text+0x681): undefined reference to `NORM_SESSION_INVALID'
/usr/bin/ld: (.text+0x696): undefined reference to `NormIsUnicastAddress'
/usr/bin/ld: (.text+0x6af): undefined reference to `NormSetTTL'
/usr/bin/ld: (.text+0x6c7): undefined reference to `NormSetRxPortReuse'
/usr/bin/ld: (.text+0x6d8): undefined reference to `NormSetLoopback'
/usr/bin/ld: (.text+0x6ec): undefined reference to `NormSetMulticastInterface'
/usr/bin/ld: (.text+0x736): undefined reference to `NormSetDefaultUnicastNack'
/usr/bin/ld: (.text+0x74c): undefined reference to `NormSetDefaultSyncPolicy'
/usr/bin/ld: (.text+0x75d): undefined reference to `NormStartReceiver'
/usr/bin/ld: (.text+0x778): undefined reference to `NormGetRandomSessionId'
/usr/bin/ld: (.text+0x7a3): undefined reference to `NormStartSender'
/usr/bin/ld: (.text+0x7bf): undefined reference to `NormSetCongestionControl'
/usr/bin/ld: (.text+0x7e2): undefined reference to `NormStreamOpen'
/usr/bin/ld: (.text+0x7e9): undefined reference to `NORM_OBJECT_INVALID'
/usr/bin/ld: (.text+0x80d): undefined reference to `NormDestroyInstance'
/usr/bin/ld: (.text+0x814): undefined reference to `NORM_SESSION_INVALID'
/usr/bin/ld: (.text+0x822): undefined reference to `NORM_INSTANCE_INVALID'
/usr/bin/ld: (.text+0x843): undefined reference to `NormCreateInstance'
/usr/bin/ld: (.text+0x84a): undefined reference to `NORM_INSTANCE_INVALID'
/usr/bin/ld: (.text+0x890): undefined reference to `NormDestroyInstance'
/usr/bin/ld: (.text+0x897): undefined reference to `NORM_INSTANCE_INVALID'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-norm_engine.o): in function `zmq::norm_engine_t::recv_data(void const*)':
(.text+0xd75): undefined reference to `NORM_OBJECT_INVALID'
/usr/bin/ld: (.text+0xd86): undefined reference to `NormObjectGetType'
/usr/bin/ld: (.text+0xd97): undefined reference to `NormObjectGetUserData'
/usr/bin/ld: (.text+0x1004): undefined reference to `NormStreamSeekMsgStart'
/usr/bin/ld: (.text+0x1025): undefined reference to `NormStreamRead'
/usr/bin/ld: (.text+0x106a): undefined reference to `NormStreamRead'
/usr/bin/ld: (.text+0x145c): undefined reference to `NormObjectSetUserData'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-norm_engine.o): in function `zmq::norm_engine_t::restart_input()':
(.text+0x1608): undefined reference to `NORM_OBJECT_INVALID'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-norm_engine.o): in function `non-virtual thunk to zmq::norm_engine_t::restart_input()':
(.text+0x1648): undefined reference to `NORM_OBJECT_INVALID'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-norm_engine.o): in function `zmq::norm_engine_t::shutdown()':
(.text+0x1789): undefined reference to `NORM_SESSION_INVALID'
/usr/bin/ld: (.text+0x1793): undefined reference to `NormDestroySession'
/usr/bin/ld: (.text+0x17a8): undefined reference to `NORM_INSTANCE_INVALID'
/usr/bin/ld: (.text+0x17b2): undefined reference to `NormStopInstance'
/usr/bin/ld: (.text+0x17be): undefined reference to `NormDestroyInstance'
/usr/bin/ld: (.text+0x17d1): undefined reference to `NormStopReceiver'
/usr/bin/ld: (.text+0x1815): undefined reference to `NormStopSender'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-norm_engine.o): in function `zmq::norm_engine_t::send_data()':
(.text+0x1a41): undefined reference to `NormStreamWrite'
/usr/bin/ld: (.text+0x1ab2): undefined reference to `NormStreamFlush'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-norm_engine.o): in function `zmq::norm_engine_t::plug(zmq::io_thread_t*, zmq::session_base_t*)':
(.text+0x1b60): undefined reference to `NormGetDescriptor'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-norm_engine.o): in function `zmq::norm_engine_t::in_event()':
(.text+0x1bf8): undefined reference to `NormGetNextEvent'
/usr/bin/ld: (.text+0x1cc6): undefined reference to `NormNodeDelete'
/usr/bin/ld: (.text+0x1cd6): undefined reference to `NormObjectGetUserData'
/usr/bin/ld: /tmp/fulcrum-build/lib/zmq/libzmq.a(libzmq_la-norm_engine.o): in function `zmq::norm_engine_t::norm_engine_t(zmq::io_thread_t*, zmq::options_t const&)':
(.text+0x1e02): undefined reference to `NORM_INSTANCE_INVALID'
/usr/bin/ld: (.text+0x1e1c): undefined reference to `NORM_SESSION_INVALID'
/usr/bin/ld: (.text+0x1e38): undefined reference to `NORM_OBJECT_INVALID'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status
make: *** [Makefile:508: Fulcrum] Error 1
Do you know how to fix this?
Maybe something from these answers https://stackoverflow.com/questions/65407610/relocation-against-xxx-in-read-only-section-text-wrong-compiler-or-linux-se but not sure.
Ok, tried it again, moved zmq
as the last library, worked.
qmake6 ../Fulcrum.pro "CONFIG-=debug" "CONFIG+=release" "LIBS+=-L/tmp/fulcrum-build/lib/rocksdb -lrocksdb -lz -lbz2 -L/tmp/fulcrum-build/lib/jemalloc -ljemalloc -L/tmp/fulcrum-build/lib/zstd -lzstd -L/usr/lib/x86_64-linux-gnu -lgssapi_krb5 -L/tmp/fulcrum-build/lib/sodium -lsodium -L/tmp/fulcrum-build/lib/lz4 -llz4 -L/tmp/fulcrum-build/lib/pgm -lpgm -L/tmp/fulcrum-build/lib/snappy -lsnappy -L/tmp/fulcrum-build/lib/zmq -lzmq" "INCLUDEPATH+=/usr/include"
Happy.
Could you please explain better why moving the ssl libraries libcrypto*.so out of the way? And should I specify the
-lcrypto
or-lssl
with qmake?
That was in the Dockerfile. It was a trick (that works) to get it to just statically link the .a
files.
Install dependencies:
$ export DEBIAN_FRONTENT=noninteractive
$ sudo apt update && sudo apt install \
git python3 build-essential cmake qmake6 clang pkg-config \
qt6-base-dev libzmq3-dev libbz2-dev librocksdb-dev libjemalloc-dev \
zlib1g-dev libssl-dev libnss3-dev libxslt1-dev libxml2-dev libzstd-dev \
libgssapi-krb5-2 libpgm-dev libsodium-dev libsnappy-dev liblz4-dev
Set program priority:
$ sudo update-alternatives \
--install /usr/bin/qmake qmake /usr/bin/qmake6 60
Move libraries to temporary directory and strip them:
## do not use trailing "/" slash at the end of directory name
zstd_libdir_orig="$(pkg-config --variable=libdir libzstd)"
rocksdb_libdir_orig="/usr/lib"
pgm_libdir_orig="/usr/lib/x86_64-linux-gnu"
sodium_libdir_orig="$(pkg-config --variable=libdir libsodium)"
snappy_libdir_orig="$(pkg-config --variable=libdir snappy)"
lz4_libdir_orig="$(pkg-config --variable=libdir liblz4)"
jemalloc_libdir_orig="$(pkg-config --variable=libdir jemalloc)"
zmq_libdir_orig="$(pkg-config --variable=libdir libzmq)"
## please match the above variables without '$' to the variable below
all_libdir_orig="zstd_libdir_orig rocksdb_libdir_orig pgm_libdir_orig sodium_libdir_orig snappy_libdir_orig lz4_libdir_orig jemalloc_libdir_orig zmq_libdir_orig"
fulcrum_buildtmp="/tmp/fulcrum-build"
## start with variable empty
all_libdir_target=""
for library in ${all_libdir_orig}; do
## get only library name
lib_name="${library%%_*}"
## get libdir path
tmp_var="$(eval printf '%s' '$'"${lib_name}"_libdir_target)"
## assign to _target the library target dir
eval "${lib_name}"_libdir_target="${fulcrum_buildtmp}/lib/${lib_name}"
## save libdir path to all targets to be created and targeted
all_libdir_target="${all_libdir_target} ${tmp_var}"
done
## unset variable(s)
lib_name=""
mkdir -p ${all_libdir_target}
for dir in ${all_libdir_target}; do
## get library name by target path (it does not contain lib prefix)
lib_name="${dir##*/}"
## get library origin directory by evaluation
eval lib_orig="$(printf '%s' '$'${lib_name}_libdir_orig)"
## cp library*.a files to target dir
cp ${lib_orig}/lib${lib_name}*.a "${dir}"
## strip all files present in target dir
for file in ${dir}/*; do
strip -g "${file}"
done
done
Import maintainer's key (also available at https://raw.githubusercontent.com/Electron-Cash/keys-n-hashes/master/pubkeys/calinkey.txt)
$ gpg --recv-keys D465135F97D0047E18E99DC321810A542031C02C
Clone the repo:
$ git clone https://github.com/cculianu/Fulcrum ~/Fulcrum
Enter the repo:
$ cd ~/Fulcrum
Get the last tag:
$ fulcrum_tag="$(git tag -l | tail -1)"
$ echo "${fulcrum_tag}"
Verify last tag (expect Good signature
, else do not proceed):
$ git verify-commit ${fulcrum_tag}^{commit}
## example:
## $ git verify-commit v1.8.1^{commit}
Checkout the verified tag:
$ git checkout ${fulcrum_tag}
From the toplevel of the fulcrum git repository, create the build directory and enter it:
$ mkdir build && cd build
Qmake:
$ qmake ../Fulcrum.pro \
"CONFIG-=debug" \
"CONFIG+=release" \
"LIBS+=-L${rocksdb_libdir_target} -lrocksdb" \
"LIBS+=-lz -lbz2" \
"LIBS+=-L${jemalloc_libdir_target} -ljemalloc" \
"LIBS+=-L${zstd_libdir_target} -lzstd" \
"LIBS+=-L/usr/lib/x86_64-linux-gnu -lgssapi_krb5" \
"LIBS+=-L${sodium_libdir_target} -lsodium" \
"LIBS+=-L${lz4_libdir_target} -llz4" \
"LIBS+=-L${pgm_libdir_target} -lpgm" \
"LIBS+=-L${snappy_libdir_target} -lsnappy" \
"LIBS+=-L${zmq_libdir_target} -lzmq" \
"INCLUDEPATH+=/usr/include"
Make:
#make -j$(echo "$(nproc)/2" | bc) ## make with half of the available cores
$ make -j$(nproc) ## make -j#, where "#" is the number of cores
If you notice, gssapi_krb5
was not moved nor stripped, this is because there is no .a
file, just .so
.
Could you please explain better why moving the ssl libraries libcrypto*.so out of the way? And should I specify the -lcrypto or -lssl with qmake?
That was in the Dockerfile. It was a trick (that works) to get it to just statically link the .a files.
https://github.com/cculianu/Fulcrum/blob/master/contrib/build/linux/_build.sh#L81 https://github.com/cculianu/Fulcrum/blob/master/contrib/build/linux/_build.sh#L101 Sorry, didn't understand, should I use it? Is there a better way than moving the libraries and them returning them to path?
About the instructions above, the shell code is posix compliant. The dependencies are per platform and I can't solve that. The libraries path are tricky to get, pkg-config does not always works reliably, sometimes it reports a different directory then it should, so what I leave for the reader is to only change the library variables value, it is the only thing to do, the rest the script handles.
Can this script be added to supported platforms? If so, where it fits best?
Debian builds do not require docker, and the patches and fixed commits are kinda old, so I think it is best to use the package manager as it already has signature verification.
If someone is using fedora or macos, they need to add the dependencies to the script that will detect the platform, and the libraries path it pkg-config fails or if it is not linux-gnu.
@nyxnor I really appreciate all your work here. I am feeling a bit under the weather today -- let me re-read and digest what you have discovered and recommended a bit later today or tomorrow and get back to you. Potentially, yes, maybe a script living in contrib/
could be warranted! Maybe calling it contrib/make_for_debian
or somesuch.. hmm. But yes, let me get back to you. Thanks for the persistence and the recommendations.
Sorry, didn't understand, should I use it? Is there a better way than moving the libraries and them returning them to path?
I don't think that's necessary in this case. That was for the Docker build which tries to be as statically linked as possible -- in this case you are using system Qt which dynamically loads, at runtime, whatever system openssl it can find as a .so. So in this case that is not necessary and I would recommend against it if using Debian/Ubuntu's qt package... since it doesn't know how to use the static openssl anyway so.. it would actually work against us here.
I am feeling a bit under the weather today
Don't rush, rest and take care.
-- let me re-read and digest what you have discovered and recommended a bit later today or tomorrow and get back to you. Potentially, yes, maybe a script living in contrib/ could be warranted! Maybe calling it contrib/make_for_debian or somesuch.. hmm. But yes, let me get back to you. Thanks for the persistence and the recommendations.
Great, just wanted to facilitate this for debian, I tried to do the smallest script possible for instruction and analysis, so we will see after you evaluate.
ping :)
In my case, I needed to install Fulcrum 1.9.1 to CentOS 9. libbz
was not properly linked, so I had to run the following.
yum install -y bzip2-devel
cd /usr/lib64
ln -s libbz2.so.1.0.8 libbz2.so.1.0
System
Platform: Debian Bullseye. Network: Bitcoin Checkout: v1.8.1
I will refer to the package names are present in debian.
Dependencies lost in different files
It is hard to find all the necessary dependencies because they are on different files. https://github.com/cculianu/Fulcrum/blob/master/contrib/build/linux/Dockerfile#L14-L18 https://github.com/cculianu/Fulcrum/blob/master/contrib/build/linux/Dockerfile#L26 Jemalloc not mentioned on the docs https://github.com/cculianu/Fulcrum/blob/master/contrib/build/build.sh#L87,
libjemalloc-dev
on debian.https://github.com/cculianu/Fulcrum/#requirements here it says about Qt Core and Qt Networking that can be installed with
qt6-base-dev
(I chose the highest version, not qt5, qt6). This section also mentions aboutlibzmq3-dev
,clang
andg++
. All fine.https://github.com/cculianu/Fulcrum/#how-to-compile On this section, it mentions about
qmake6
,libbz2-dev
.https://github.com/cculianu/Fulcrum/#what-to-do-if-compiling-fails Then on this section is mentions about
librocksdb
.My point is that the dependencies are on different sections, instead of one section specifying dependency for platform. Some dependencies are mentioned twice or three times on the readme, but others are missing.
Can you organize the dependencies in one single section?
Building without docker on debian
As I am trying to build without docker because the current docker build does not check integrity and authenticity of downloaded files
Found dependencies
From reading three build scripts plus the readme, found the following dependencies for debian:
If you notice, I'm installing the debian package for the libraries, not installing from git. Anyway, jemalloc and rocksdb fixed commit seems to be 2years old https://github.com/cculianu/Fulcrum/blob/master/contrib/build/linux/jemalloc-commit-hash https://github.com/cculianu/Fulcrum/blob/master/contrib/build/linux/rocksdb-commit-hash
Here is my software libraries version:
qmake build command
I moved the libraries to tmp, stripped them and linked against them. I don't know if it was necessary to strip them all, because there was no diff from the stripped ones, meaning debian already strips them stripped.
Also, qmake is pointing to qmake6.
If you notice, the qmake command is different then on https://github.com/cculianu/Fulcrum/blob/master/contrib/build/linux/_build.sh#L86 I added
-lgssapi_krb5
and-lzstd
because without it, it was giving me problemserror adding symbols: DSO missing from command line
Build error log