C++ 使用Intel archiver命令而不是ar来增强构建(也称为bjam)
当我在英特尔编译器中使用boost build时,使用内置的“英特尔”工具,它在将源代码编译成目标文件时使用C++ 使用Intel archiver命令而不是ar来增强构建(也称为bjam),c++,bjam,boost-build,icc,C++,Bjam,Boost Build,Icc,当我在英特尔编译器中使用boost build时,使用内置的“英特尔”工具,它在将源代码编译成目标文件时使用icpc,但使用ar生成.a静态库。通常情况下,这是非常好的,因为英特尔自己的archiverxiar主要是ar的包装器 但是,当我在大型应用程序中构建一些(但不是全部)库/模块时,我尝试使用Intel的“过程间优化”(-ipo)选项。我希望它在库/模块内进行优化,而不是在库/模块之间进行优化。为了实现这一点,我必须在制作.a文件时使用xiar或xild-lib,因为ar不理解icpc-i
icpc
,但使用ar
生成.a
静态库。通常情况下,这是非常好的,因为英特尔自己的archiverxiar
主要是ar
的包装器
但是,当我在大型应用程序中构建一些(但不是全部)库/模块时,我尝试使用Intel的“过程间优化”(-ipo
)选项。我希望它在库/模块内进行优化,而不是在库/模块之间进行优化。为了实现这一点,我必须在制作.a
文件时使用xiar
或xild-lib
,因为ar
不理解icpc-ipo
创建的.o
文件。它认为它成功了,但是它制作的.a
在链接阶段将失败
如何将boost build用于创建归档文件的命令从默认的ar
更改为xiar
我曾尝试在user-config.jam中使用英特尔语句将
(我看到msvc内置工具支持)添加到,但它似乎被忽略了。我不知道这会影响archiver的选择。我不得不侵入boost build的内部来实现这一点。如果你需要这个功能,你也可以破解它
在/usr/share/boost-build/tools/intel-linux.jam
或/usr/share/boost-build/src/tools/intel-linux.jam
(哪个版本的存在可能取决于您的boost-build版本)中,将以下内容添加到文件末尾:
actions piecemeal archive
{
"xiar" $(AROPTIONS) rc "$(<)" "$(>)"
"ranlib" "$(<)"
}
动作片段存档
{
“xiar”$(AROPTIONS)rc”$()”
“ranlib”“$”(我不得不侵入boost build的内部来实现这个功能。如果你需要这个功能,你也可以破解它
在/usr/share/boost-build/tools/intel-linux.jam
或/usr/share/boost-build/src/tools/intel-linux.jam
(哪个版本的存在可能取决于您的boost-build版本)中,将以下内容添加到文件末尾:
actions piecemeal archive
{
"xiar" $(AROPTIONS) rc "$(<)" "$(>)"
"ranlib" "$(<)"
}
动作片段存档
{
“xiar”$(AROPTIONS)rc”$()”
“ranlib”$(