Problem with linking shared library on MacOS

Dear experts,
I am having a problem linking the shared library on MacOS.
I have a very simple setup to reproduce the problem.
The repository is here:

I am making the repository using cmake on my Mac:
inside the test repository:

  1. mkdir build
  2. cd build
  3. cmake ../
  4. make -j8

But this is the error that I am getting:

[ 33%] Generating G__LUXESimEventDict.cxx, libLUXESimEventDict_rdict.pcm, libLUXESimEventDict.rootmap
[ 66%] Building CXX object CMakeFiles/G__LUXESimEventDict.dir/G__LUXESimEventDict.cxx.o
[ 66%] Built target G__LUXESimEventDict
[100%] Linking CXX shared library libLUXESimEventDict.dylib
ld: warning: -pie being ignored. It is only used when linking a main executable
Undefined symbols for architecture x86_64:
  "Fatal(char const*, char const*, ...)", referenced from:
      ROOT::Detail::TCollectionProxyInfo::Iterators<std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, false>::next(void*, void const*) in G__LUXESimEventDict.cxx.o
  "TVersionCheck::TVersionCheck(int)", referenced from:
      __GLOBAL__sub_I_G__LUXESimEventDict.cxx in G__LUXESimEventDict.cxx.o
  "ROOT::AddClassAlternate(char const*, char const*)", referenced from:
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::Class_ShowMembers(TClass*, void const*, TMemberInspector&)", referenced from:
      Dummy::ShowMembers(TMemberInspector&) const in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::SetNewArray(void* (*)(long, void*))", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::SetDestructor(void (*)(void*))", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::SetDeleteArray(void (*)(void*))", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::GetImplFileLine()", referenced from:
      Dummy::ImplFileLine() in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::GetImplFileName()", referenced from:
      Dummy::ImplFileName() in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::AdoptCollectionProxyInfo(ROOT::Detail::TCollectionProxyInfo*)", referenced from:
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::SetNew(void* (*)(void*))", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::GetClass()", referenced from:
      Dummy::Dictionary() in G__LUXESimEventDict.cxx.o
      Dummy::Class() in G__LUXESimEventDict.cxx.o
      Dummy::Streamer(TBuffer&) in G__LUXESimEventDict.cxx.o
      Dummy::IsA() const in G__LUXESimEventDict.cxx.o
      Dummy::ShowMembers(TMemberInspector&) const in G__LUXESimEventDict.cxx.o
      ROOT::vectorlEtuplelEintcOdoublegRsPgR_Dictionary() in G__LUXESimEventDict.cxx.o
      ROOT::maplEunsignedsPlongcOvectorlEtuplelEintcOdoublegRsPgRsPgR_Dictionary() in G__LUXESimEventDict.cxx.o
      ...
  "ROOT::TGenericClassInfo::SetDelete(void (*)(void*))", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::TGenericClassInfo(char const*, int, char const*, int, std::type_info const&, ROOT::Internal::TInitBehavior const*, TClass* (*)(), TVirtualIsAProxy*, int, int)", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::~TGenericClassInfo()", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::Internal::DefineBehavior(void*, void*)", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::Internal::HasConsistentHashMember(char const*)", referenced from:
      Dummy::CheckTObjectHashConsistency() const in G__LUXESimEventDict.cxx.o
  "ROOT::Internal::HasConsistentHashMember(TClass&)", referenced from:
      Dummy::CheckTObjectHashConsistency() const in G__LUXESimEventDict.cxx.o
  "TROOT::RegisterModule(char const*, char const**, char const**, char const*, char const*, void (*)(), std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, int>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, int>>> const&, char const**, bool)", referenced from:
      (anonymous namespace)::TriggerDictionaryInitialization_libLUXESimEventDict_Impl() in G__LUXESimEventDict.cxx.o
  "TIsAProxy::TIsAProxy(std::type_info const&)", referenced from:
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "_kAssertMsg", referenced from:
      ROOT::Detail::TCollectionProxyInfo::Iterators<std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, false>::next(void*, void const*) in G__LUXESimEventDict.cxx.o
ld: symbol(s) not found for architecture x86_64
clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libLUXESimEventDict.dylib] Error 1
make[1]: *** [CMakeFiles/LUXESimEventDict.dir/all] Error 2
make: *** [all] Error 2

Interestingly, the same setup works for a Linux machine:
ROOT Version: 6.30/04
Platform: Ubuntu 22.04.4, 64-bit
Compiler: GCC 11.4.0

May I know what may be the problem with my Mac?
Mac system specifications are given below [1].
Do I need to add any additional lines on CMakeLists.txt?

Thank you,
Arka

[1]


_ROOT Version:6.26/04 (installed using conda)
_Platform: MacOS (x86_64, Intel i9)
_Compiler: Clang 13.0.1


Hi Arka,

Sorry to read you are experiencing this issue.
Those seem to be missing symbols from libCore. Could you please share the exact command the build system is using for linking?

Cheers,
Danilo

Hi @Danilo ,
Thank you very much for following this up.
However, I am not sure I understand your question.
The linking is specified in the CMakeLists.txt file:

I did not do anything else to link the libraries from the command line.
I simply use steps 1 to 4 as mentioned in my previous post.

Best,
Arka

Hi @Danilo ,
If this helps, I am attaching the Makefile created by CMake:

# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.25

# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target

# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:

#=============================================================================
# Special targets provided by cmake.

# Disable implicit rules so canonical targets will work.
.SUFFIXES:

# Disable VCS-based implicit rules.
% : %,v

# Disable VCS-based implicit rules.
% : RCS/%

# Disable VCS-based implicit rules.
% : RCS/%,v

# Disable VCS-based implicit rules.
% : SCCS/s.%

# Disable VCS-based implicit rules.
% : s.%

.SUFFIXES: .hpux_make_needs_suffix_list

# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s

#Suppress display of executed commands.
$(VERBOSE).SILENT:

# A target that is always out of date.
cmake_force:
.PHONY : cmake_force

#=============================================================================
# Set environment variables for the build.

# The shell in which to execute make rules.
SHELL = /bin/sh

# The CMake executable.
CMAKE_COMMAND = /usr/local/Cellar/cmake/3.25.0/bin/cmake

# The command to remove a file.
RM = /usr/local/Cellar/cmake/3.25.0/bin/cmake -E rm -f

# Escaping for special characters.
EQUALS = =

# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /Users/arkasantra/ACTSTracking/DevelopedBranch/test

# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build

#=============================================================================
# Targets provided globally by CMake.

# Special rule for the target edit_cache
edit_cache:
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
	/usr/local/Cellar/cmake/3.25.0/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache

# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast

# Special rule for the target rebuild_cache
rebuild_cache:
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
	/usr/local/Cellar/cmake/3.25.0/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache

# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast

# The main all target
all: cmake_check_build_system
	$(CMAKE_COMMAND) -E cmake_progress_start /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build/CMakeFiles /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build//CMakeFiles/progress.marks
	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
	$(CMAKE_COMMAND) -E cmake_progress_start /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build/CMakeFiles 0
.PHONY : all

# The main clean target
clean:
	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean
.PHONY : clean

# The main clean target
clean/fast: clean
.PHONY : clean/fast

# Prepare targets for installation.
preinstall: all
	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall

# Prepare targets for installation.
preinstall/fast:
	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall/fast

# clear depends
depend:
	$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend

#=============================================================================
# Target rules for targets named LUXESimEventDict

# Build rule for target.
LUXESimEventDict: cmake_check_build_system
	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 LUXESimEventDict
.PHONY : LUXESimEventDict

# fast build rule for target.
LUXESimEventDict/fast:
	$(MAKE) $(MAKESILENT) -f CMakeFiles/LUXESimEventDict.dir/build.make CMakeFiles/LUXESimEventDict.dir/build
.PHONY : LUXESimEventDict/fast

#=============================================================================
# Target rules for targets named G__LUXESimEventDict

# Build rule for target.
G__LUXESimEventDict: cmake_check_build_system
	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 G__LUXESimEventDict
.PHONY : G__LUXESimEventDict

# fast build rule for target.
G__LUXESimEventDict/fast:
	$(MAKE) $(MAKESILENT) -f CMakeFiles/G__LUXESimEventDict.dir/build.make CMakeFiles/G__LUXESimEventDict.dir/build
.PHONY : G__LUXESimEventDict/fast

G__LUXESimEventDict.o: G__LUXESimEventDict.cxx.o
.PHONY : G__LUXESimEventDict.o

# target to build an object file
G__LUXESimEventDict.cxx.o:
	$(MAKE) $(MAKESILENT) -f CMakeFiles/G__LUXESimEventDict.dir/build.make CMakeFiles/G__LUXESimEventDict.dir/G__LUXESimEventDict.cxx.o
.PHONY : G__LUXESimEventDict.cxx.o

G__LUXESimEventDict.i: G__LUXESimEventDict.cxx.i
.PHONY : G__LUXESimEventDict.i

# target to preprocess a source file
G__LUXESimEventDict.cxx.i:
	$(MAKE) $(MAKESILENT) -f CMakeFiles/G__LUXESimEventDict.dir/build.make CMakeFiles/G__LUXESimEventDict.dir/G__LUXESimEventDict.cxx.i
.PHONY : G__LUXESimEventDict.cxx.i

G__LUXESimEventDict.s: G__LUXESimEventDict.cxx.s
.PHONY : G__LUXESimEventDict.s

# target to generate assembly for a file
G__LUXESimEventDict.cxx.s:
	$(MAKE) $(MAKESILENT) -f CMakeFiles/G__LUXESimEventDict.dir/build.make CMakeFiles/G__LUXESimEventDict.dir/G__LUXESimEventDict.cxx.s
.PHONY : G__LUXESimEventDict.cxx.s

# Help Target
help:
	@echo "The following are some of the valid targets for this Makefile:"
	@echo "... all (the default if no target is provided)"
	@echo "... clean"
	@echo "... depend"
	@echo "... edit_cache"
	@echo "... rebuild_cache"
	@echo "... G__LUXESimEventDict"
	@echo "... LUXESimEventDict"
	@echo "... G__LUXESimEventDict.o"
	@echo "... G__LUXESimEventDict.i"
	@echo "... G__LUXESimEventDict.s"
.PHONY : help



#=============================================================================
# Special targets to cleanup operation of make.

# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
	$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

Thank you,
Arka

Hi Arka,

Thanks. What does make --verbose outputs as linking command? It would be interesting to see what is actually linked.

Cheers,
D

Hi @Danilo ,
Here is the output of cmake --build . --verbose:

/usr/local/Cellar/cmake/3.25.0/bin/cmake -S/Users/arkasantra/ACTSTracking/DevelopedBranch/test -B/Users/arkasantra/ACTSTracking/DevelopedBranch/test/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/local/Cellar/cmake/3.25.0/bin/cmake -E cmake_progress_start /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build/CMakeFiles /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build//CMakeFiles/progress.marks
/Applications/Xcode.app/Contents/Developer/usr/bin/make  -f CMakeFiles/Makefile2 all
/Applications/Xcode.app/Contents/Developer/usr/bin/make  -f CMakeFiles/G__LUXESimEventDict.dir/build.make CMakeFiles/G__LUXESimEventDict.dir/depend
cd /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build && /usr/local/Cellar/cmake/3.25.0/bin/cmake -E cmake_depends "Unix Makefiles" /Users/arkasantra/ACTSTracking/DevelopedBranch/test /Users/arkasantra/ACTSTracking/DevelopedBranch/test /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build/CMakeFiles/G__LUXESimEventDict.dir/DependInfo.cmake --color=
/Applications/Xcode.app/Contents/Developer/usr/bin/make  -f CMakeFiles/G__LUXESimEventDict.dir/build.make CMakeFiles/G__LUXESimEventDict.dir/build
make[2]: Nothing to be done for `CMakeFiles/G__LUXESimEventDict.dir/build'.
[ 66%] Built target G__LUXESimEventDict
/Applications/Xcode.app/Contents/Developer/usr/bin/make  -f CMakeFiles/LUXESimEventDict.dir/build.make CMakeFiles/LUXESimEventDict.dir/depend
cd /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build && /usr/local/Cellar/cmake/3.25.0/bin/cmake -E cmake_depends "Unix Makefiles" /Users/arkasantra/ACTSTracking/DevelopedBranch/test /Users/arkasantra/ACTSTracking/DevelopedBranch/test /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build /Users/arkasantra/ACTSTracking/DevelopedBranch/test/build/CMakeFiles/LUXESimEventDict.dir/DependInfo.cmake --color=
/Applications/Xcode.app/Contents/Developer/usr/bin/make  -f CMakeFiles/LUXESimEventDict.dir/build.make CMakeFiles/LUXESimEventDict.dir/build
[100%] Linking CXX shared library libLUXESimEventDict.dylib
/usr/local/Cellar/cmake/3.25.0/bin/cmake -E cmake_link_script CMakeFiles/LUXESimEventDict.dir/link.txt --verbose=1
/opt/anaconda3/envs/my_root/bin/x86_64-apple-darwin13.4.0-clang++ -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -fmessage-length=0 -isystem /opt/anaconda3/envs/my_root/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -dynamiclib -Wl,-headerpad_max_install_names -L/usr/local/opt/qt@5/lib -o libLUXESimEventDict.dylib -install_name @rpath/libLUXESimEventDict.dylib CMakeFiles/G__LUXESimEventDict.dir/G__LUXESimEventDict.cxx.o
ld: warning: -pie being ignored. It is only used when linking a main executable
Undefined symbols for architecture x86_64:
  "Fatal(char const*, char const*, ...)", referenced from:
      ROOT::Detail::TCollectionProxyInfo::Iterators<std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, false>::next(void*, void const*) in G__LUXESimEventDict.cxx.o
  "TVersionCheck::TVersionCheck(int)", referenced from:
      __GLOBAL__sub_I_G__LUXESimEventDict.cxx in G__LUXESimEventDict.cxx.o
  "ROOT::AddClassAlternate(char const*, char const*)", referenced from:
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::Class_ShowMembers(TClass*, void const*, TMemberInspector&)", referenced from:
      Dummy::ShowMembers(TMemberInspector&) const in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::SetNewArray(void* (*)(long, void*))", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::SetDestructor(void (*)(void*))", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::SetDeleteArray(void (*)(void*))", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::GetImplFileLine()", referenced from:
      Dummy::ImplFileLine() in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::GetImplFileName()", referenced from:
      Dummy::ImplFileName() in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::AdoptCollectionProxyInfo(ROOT::Detail::TCollectionProxyInfo*)", referenced from:
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::SetNew(void* (*)(void*))", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::GetClass()", referenced from:
      Dummy::Dictionary() in G__LUXESimEventDict.cxx.o
      Dummy::Class() in G__LUXESimEventDict.cxx.o
      Dummy::Streamer(TBuffer&) in G__LUXESimEventDict.cxx.o
      Dummy::IsA() const in G__LUXESimEventDict.cxx.o
      Dummy::ShowMembers(TMemberInspector&) const in G__LUXESimEventDict.cxx.o
      ROOT::vectorlEtuplelEintcOdoublegRsPgR_Dictionary() in G__LUXESimEventDict.cxx.o
      ROOT::maplEunsignedsPlongcOvectorlEtuplelEintcOdoublegRsPgRsPgR_Dictionary() in G__LUXESimEventDict.cxx.o
      ...
  "ROOT::TGenericClassInfo::SetDelete(void (*)(void*))", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::TGenericClassInfo(char const*, int, char const*, int, std::type_info const&, ROOT::Internal::TInitBehavior const*, TClass* (*)(), TVirtualIsAProxy*, int, int)", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::TGenericClassInfo::~TGenericClassInfo()", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::Internal::DefineBehavior(void*, void*)", referenced from:
      ROOT::GenerateInitInstanceLocal(Dummy const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "ROOT::Internal::HasConsistentHashMember(char const*)", referenced from:
      Dummy::CheckTObjectHashConsistency() const in G__LUXESimEventDict.cxx.o
  "ROOT::Internal::HasConsistentHashMember(TClass&)", referenced from:
      Dummy::CheckTObjectHashConsistency() const in G__LUXESimEventDict.cxx.o
  "TROOT::RegisterModule(char const*, char const**, char const**, char const*, char const*, void (*)(), std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, int>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, int>>> const&, char const**, bool)", referenced from:
      (anonymous namespace)::TriggerDictionaryInitialization_libLUXESimEventDict_Impl() in G__LUXESimEventDict.cxx.o
  "TIsAProxy::TIsAProxy(std::type_info const&)", referenced from:
      ROOT::GenerateInitInstanceLocal(std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>> const*) in G__LUXESimEventDict.cxx.o
      ROOT::GenerateInitInstanceLocal(std::__1::map<unsigned long, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>>>> const*) in G__LUXESimEventDict.cxx.o
  "_kAssertMsg", referenced from:
      ROOT::Detail::TCollectionProxyInfo::Iterators<std::__1::vector<std::__1::tuple<int, double>, std::__1::allocator<std::__1::tuple<int, double>>>, false>::next(void*, void const*) in G__LUXESimEventDict.cxx.o
ld: symbol(s) not found for architecture x86_64
clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libLUXESimEventDict.dylib] Error 1
make[1]: *** [CMakeFiles/LUXESimEventDict.dir/all] Error 2
make: *** [all] Error 2

I hope this helps.

Thank you,
Arka

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.