Cannot load: undefined symbol tbb::task::note_affinity
Enchufa2 opened this issue · 5 comments
Are we sure that nothing is required on Linux?
Lines 92 to 93 in 0da9610
I cannot load the markovchain
package (cc @spedygiorgio), which links against RcppParallel
, with the following error:
Error: package or namespace load failed for ‘markovchain’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/library/markovchain/libs/markovchain.so':
/usr/local/lib/R/library/markovchain/libs/markovchain.so: undefined symbol: _ZN3tbb4task13note_affinityEt
So somehow this TBB symbol ends up in the markovchain
library. Manually adding -ltbb
to the linking phase solves the issue for me, but currently RcppParallel::RcppParallelLibs()
returns nothing for Linux.
We can compare notes, I can on the courtesy Linux VM I use for Rcpp testing which has a ton of packages in ~/tmp/lib
:
R> .libPaths()
[1] "/home/dirk/tmp/lib" "/usr/local/lib/R/site-library" "/usr/lib/R/site-library" "/usr/lib/R/library"
R> library("markovchain")
Package: markovchain
Version: 0.9.0
Date: 2022-07-01
BugReport: https://github.com/spedygiorgio/markovchain/issues
R>
All CRAN, all current, on Debian testing (also current).
With system or bundled tbb? I'm using the system tbb here via TBB_LIB and TBB_INC.
Ah yes, I am likely using the bundled one.
Then that's most probably the issue. It should be easy to fix the behavior of LdFlags()
depending on whether the package was built using a user-provided TBB_LIB, or an auto-detected one as proposed in #178. I'll look into this when I find time.
Cannot reproduce this anymore.