Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7953 Discussions

icpc -Wl,--start-group -Wl, --end-group doen't find all reference for MKL lib ?

rudaho
Beginner
253 Views
Hi~

I'm using icpc to static link the application with MKL library. I used ~/intel/cc/10.1.011/bin/icpc

icpc xxx.o ... $(MKLPATH)/libmkl_solver.a -Wl,--start-group $(MKLPATH)/libmkl_intel.a $(MKLPATH)/libmkl_intel_thread.a $(MKLPATH)/libmkl_core.a -Wl,--end-group -openmp -lpthread

However, it still doesn't find all the cross reference between these three libraries. To work around, I just type these three libraries repeatedly until all undefined references are found. It's like $(MKLPATH)/libmkl_intel.a $(MKLPATH)/libmkl_intel_thread.a $(MKLPATH)/libmkl_core.a $(MKLPATH)/libmkl_intel.a $(MKLPATH)/libmkl_intel_thread.a $(MKLPATH)/libmkl_core.a $(MKLPATH)/libmkl_intel.a $(MKLPATH)/libmkl_intel_thread.a $(MKLPATH)/libmkl_core.a $(MKLPATH)/libmkl_intel.a $(MKLPATH)/libmkl_intel_thread.a $(MKLPATH)/libmkl_core.a ...

Is there any idea about why --start-group --end-group doesn't work for my case?

Thanks a lot...

Best Regards

Yi-Ju
0 Kudos
1 Reply
TimP
Honored Contributor III
253 Views
There's a serious bug in the link script creation step for that version of the compiler, which we reported right away. We use 10.1.021.
For the work-around to avoid dependence on correct passage of --begin-group ... --end-group, I found that putting libmkl_intel_thread (or sequential) last in the group requires one less explicit repetition of the group.
0 Kudos
Reply