如何使用Eclipse --start-group --end-group链接英特尔MKL

我无法使用eclipse CDT链接到Intel MKL。根据我的具体要求,Intel's Link Line Advisor Tool的建议是使用链接线:

-Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_sequential.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl    

我需要的更具可读性的形式:

--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core --end-group

问题是--start-group --end-group语法不是(AFAIK)eclipse中的选项。 MKL库具有很多循环依赖项;为了避免必须重复链接库,必须使用此语法。没有这种语法,我的库列表很糟糕:

-lmkl_core -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_sequential -lmkl_core -lmkl_sequential -lmkl_core -lmkl_sequential    

那么问题是如何使用--start-group语法来防止循环引用,从而配置eclipse CDT以链接Intel MKL库?

a283133294 回答:如何使用Eclipse --start-group --end-group链接英特尔MKL

我解决了搜索StackOverflow的问题。 Eclipse CDT上的This Answer和--start-group选项几乎就是解决方案。需要稍作修改;将$(LIBS)变量而不是$(USER_OBS)放入组中。

所以发件人:

${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}

为此:

${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} $(OBJS) $(USER_OBJS) -Wl,--start-group $(LIBS) -Wl,--end-group 

使Eclipse构建正常。命令行如下:

g++ -L"Intel MKL 2019.5.281/linux/lib" -shared -o "myLibrary.so"  ./MyObject.o -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group
本文链接:https://www.f2er.com/3117883.html

大家都在问