Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bitcoin-qt FTBFS : undefined reference to symbol 'shm_unlink@@GLIBC_2.2.5' #879

Closed
dooglus opened this issue Feb 21, 2012 · 7 comments
Closed

Comments

@dooglus
Copy link
Contributor

dooglus commented Feb 21, 2012

Since updating archlinux i've been unable to build bitcoin-qt from git HEAD.

The error is as follows:

$ make
g++ -m64 -Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu -fstack-protector -Wl,-O1 -o bitcoin-qt build/bitcoin.o [...] build/qrc_bitcoin.o -L/usr/lib -lqrencode -lminiupnpc -lssl -lcrypto -ldb_cxx -lboost_system -lboost_filesystem -lboost_program_options -lboost_thread -lQtGui -lQtCore -lpthread
/usr/bin/ld: build/qtipcserver.o: undefined reference to symbol 'shm_unlink@@GLIBC_2.2.5'
/usr/bin/ld: note: 'shm_unlink@@GLIBC_2.2.5' is defined in DSO /lib/librt.so.1 so try adding it to the linker command line
/lib/librt.so.1: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make: *** [bitcoin-qt] Error 1
$

I made the following change to bitcoin-qt.pro and the problem went away:

LIBS += $$join(BOOST_LIB_PATH,,-L,) $$join(BDB_LIB_PATH,,-L,) $$join(OPENSSL_LIB_PATH,,-L,) $$join(QRENCODE_LIB_PATH,,-L,)
-LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX
+LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX -lrt

-lgdi32 has to happen after -lcrypto (see #681)

I don't know enough about what's going on to say whether that's a good idea, but it worked for me...

@laanwj
Copy link
Member

laanwj commented Feb 21, 2012

Adding -rt should be done only for Linux, I suppose? It's strange that we'd have to link against it directly, as we don't use shm_open/shm_unlink directly, it is at most Boost using it.

@dooglus
Copy link
Contributor Author

dooglus commented Feb 21, 2012

When trying to understand the change I found a link:
http://fedoraproject.org/wiki/UnderstandingDSOLinkChange
that claims to explain it.

Hope that helps!

@dooglus
Copy link
Contributor Author

dooglus commented Feb 21, 2012

The undefined symbol is referenced on line 374 of /usr/include/boost/interprocess/shared_memory_object.hpp,
included by /usr/include/boost/interprocess/ipc/message_queue.hpp,
included by bitcoin/src/qt/qtipcserver.cpp

@laanwj
Copy link
Member

laanwj commented Feb 21, 2012

Yes, that makes it fully clear. We must link to -lrt on Linux, as previously we were using it indirectly through some other lib and that's no longer allowed...

@pio2398
Copy link

pio2398 commented Mar 14, 2012

On Fedora You fix help too.

@bitaussie
Copy link

Is that some kind of a stack-based language?

Does changing "LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX" to "LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX -lrt" in bitcoin-qt.pro fix it on Fedora?

@laanwj
Copy link
Member

laanwj commented Mar 14, 2012

Fixed now.

@laanwj laanwj closed this as completed Mar 14, 2012
ptschip pushed a commit to ptschip/bitcoin that referenced this issue Jan 5, 2018
* add multiple arg importprivatekeys and importaddresses RPC calls to help with extremely long rescan times

* add status strings so that we can discover when long running async tasks are completed.  used status string in rescan operation
dexX7 added a commit to dexX7/bitcoin that referenced this issue Feb 13, 2019
7fe13cc Bump version to Omni Core 0.4.0 (dexX7)
lateminer pushed a commit to lateminer/bitcoin that referenced this issue Oct 30, 2019
9971169 [Refactor] Rename ui_interface.h file (Fuzzbawls)

Tree-SHA512: db41888a01d588c19888330f0333ee0ab34f5aabe2a7f139772ac540a02532bc75874667917cc163cde592124d5368704c169cd51ffdec4f494a033ab28e5eb9
sipa added a commit to sipa/bitcoin that referenced this issue Jul 14, 2021
be8d9c2 Merge bitcoin-core/secp256k1#965: gen_context: Don't use any ASM
aeece44 gen_context: Don't use any ASM
7688a4f Merge bitcoin-core/secp256k1#963: "Schnorrsig API overhaul" fixups
90e8344 ci: Add C++ test
f698caa Use unsigned char consistently for byte arrays
b5b8e7b Don't declare constants twice
769528f Don't use string literals for char arrays without NUL termination
2cc3cfa Fix -Wmissing-braces warning in clang
0440945 Merge bitcoin#844: schnorrsig API overhaul
ec3aaa5 Merge bitcoin#960: tests_exhaustive: check the result of secp256k1_ecdsa_sign
a1ee83c tests_exhaustive: check the result of secp256k1_ecdsa_sign
253f90c Merge bitcoin-core/secp256k1#951: configure: replace AC_PATH_PROG to AC_CHECK_PROG
446d28d Merge bitcoin-core/secp256k1#944: Various improvements related to CFLAGS
0302138 ci: Make compiler warning into errors on CI
b924e1e build: Ensure that configure's compile checks default to -O2
7939cd5 build: List *CPPFLAGS before *CFLAGS like on the compiler command line
595e8a3 build: Enable -Wcast-align=strict warning
0725626 build: Use own variable SECP_CFLAGS instead of touching user CFLAGS
4866178 Merge bitcoin-core/secp256k1#955: Add random field multiply/square tests
75ce488 Merge bitcoin-core/secp256k1#959: tests: really test the non-var scalar inverse
41ed139 tests: really test the non-var scalar inverse
5f6ceaf schnorrsig: allow setting MSGLEN != 32 in benchmark
fdd06b7 schnorrsig: add tests for sign_custom and varlen msg verification
d8d806a schnorrsig: add extra parameter struct for sign_custom
a0c3fc1 schnorrsig: allow signing and verification of variable length msgs
5a8e499 Add secp256k1_tagged_sha256 as defined in BIP-340
b6c0b72 schnorrsig: remove noncefp args from sign; add sign_custom function
bdf19f1 Add random field multiply/square tests
8ae56e3 Merge bitcoin#879: Avoid passing out-of-bound pointers to 0-size memcpy
a4642fa configure: replace AC_PATH_PROG to AC_CHECK_PROG
1758a92 Merge bitcoin#950: ci: Add ppc64le build
c58c4ea ci: Add ppc64le build
7973576 Merge bitcoin#662: Add ecmult_gen, ecmult_const and ecmult to benchmark
8f879c2 Fix array size in bench_ecmult
2fe1b50 Add ecmult_gen, ecmult_const and ecmult to benchmark
593e6ba Clean up ecmult_bench to make space for more benchmarks
50f3367 Merge bitcoin#947: ci: Run PRs on merge result even for i686
a35fdd3 ci: Run PRs on merge result even for i686
442cee5 schnorrsig: add algolen argument to nonce_function_hardened
df3bfa1 schnorrsig: clarify result of calling nonce_function_bip340 without data
99e8614 README: mention schnorrsig module
3dc8c07 Merge bitcoin#846: ci: Run ASan/LSan and reorganize sanitizer and Valgrind jobs
02dcea1 ci: Make test iterations configurable and tweak for sanitizer builds
489ff5c tests: Treat empty SECP2561_TEST_ITERS as if it was unset
fcfcb97 ci: Simplify to use generic wrapper for QEMU, Valgrind, etc
de4157f ci: Run ASan/LSan and reorganize sanitizer and Valgrind jobs
399722a Merge bitcoin#941: Clean up git tree
09b3bb8 Clean up git tree
bf0ac46 Merge bitcoin#930: Add ARM32/ARM64 CI
202a030 Merge bitcoin#850: add `secp256k1_ec_pubkey_cmp` method
1e78c18 Merge bitcoin-core/secp256k1#940: contrib: Explain explicit header guards
6939487 Merge bitcoin#926: secp256k1.h: clarify that by default arguments must be != NULL
6eceec6 add `secp256k1_xonly_pubkey_cmp` method
0d9561a add `secp256k1_ec_pubkey_cmp` method
22a9ea1 contrib: Explain explicit header guards
6c52ae8 Merge bitcoin#937: Have ge_set_gej_var, gej_double_var and ge_set_all_gej_var initialize all fields of their outputs.
185a6af Merge bitcoin#925: changed include statements without prefix 'include/'
14c9739 tests: Improve secp256k1_ge_set_all_gej_var for some infinity inputs
4a19668 tests: Test secp256k1_ge_set_all_gej_var for all infinity inputs
3c90bdd change local lib headers to be relative for those pointing at "include/" dir
45b6468 Have secp256k1_ge_set_all_gej_var initialize all fields. Previous behaviour would not initialize r->y values in the case where infinity is passed in. Furthermore, the previous behaviour wouldn't initialize anything in the case where all inputs were infinity.
31c0f6d Have secp256k1_gej_double_var initialize all fields. Previous behaviour would not initialize r->x and r->y values in the case where infinity is passed in.
dd6c3de Have secp256k1_ge_set_gej_var initialize all fields. Previous behaviour would not initialize r->x and r->y values in the case where infinity is passed in.
d0bd269 Merge bitcoin-core/secp256k1#936: Fix gen_context/ASM build on ARM
8bbad7a Add asm build to ARM32 CI
7d65ed5 Add ARM32/ARM64 CI
c848352 Makefile.am: Don't pass a variable twice
2161f31 Makefile.am: Honor config when building gen_context
99f47c2 gen_context: Don't use external ASM because it complicates the build
98e0358 Merge bitcoin#933: Avoids a missing brace warning in schnorrsig/tests_impl.h on old compilers
99e2d5b Avoids a missing brace warning in schnorrsig/tests_impl.h on old compilers.
34388af Merge bitcoin#922: Add mingw32-w64/wine CI build
7012a18 Merge bitcoin#928: Define SECP256K1_BUILD in secp256k1.c directly.
ed5a199 tests: fopen /dev/urandom in binary mode
ae9e648 Define SECP256K1_BUILD in secp256k1.c directly.
4dc37bf Add mingw32-w64/wine CI build
0881633 secp256k1.h: clarify that by default arguments must be != NULL
9570f67 Avoid passing out-of-bound pointers to 0-size memcpy

git-subtree-dir: src/secp256k1
git-subtree-split: be8d9c2
@bitcoin bitcoin locked as resolved and limited conversation to collaborators Sep 8, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants