我的计算机上有不同的C ++编译器,每个编译器都有自己的libstdc ++。所以它们的大小不同。
window.onmousemove = logMouseMove;
function logMouseMove(e) {
e = e || window.event;
mousePos = e.clientX;
el = document.querySelector('.circle');
const elPos = getOffset(el);
if(mousePos < (elPos -20) || mousePos > (elPos + 20)) {
triggerAnimation();
};
}
function getOffset(el) {
el = el.getBoundingClientRect();
return el.left + window.scrollX + 50;
}
function triggerAnimation() {
xValues = [100, 0, 400];
yValues = [0, 50, 200];
const xVal = xValues[Math.floor(Math.random()*xValues.length)];
const yVal = yValues[Math.floor(Math.random()*yValues.length)];
var duration = anime({
targets: '#duration .el',
translateX: [
{ value: xVal, duration: 1000, delay: 500, elasticity: 0 },
{ value: xVal, duration: 1000, delay: 500, elasticity: 0 }
],
scaleX: [
{ value: 2, duration: 100, delay: 500, easing: 'easeOutExpo' },
{ value: 1, duration: 900, elasticity: 300 },
{ value: 2, duration: 100, delay: 500, easing: 'easeOutExpo' },
{ value: 1, duration: 900, elasticity: 300 }
],
translateY: [
{ value: yVal, duration: 1000, delay: 500, elasticity: 0 },
{ value: yVal, duration: 1000, delay: 500, elasticity: 0 }
],
});
}
我想知道为什么libstdc ++。so.6.0.13比其他人小得多,并且有什么方法可以减少其他人。尺寸。 如果有人可以帮助我,我会很高兴。
答案 0 :(得分:9)
libstdc ++的版本控制方案具有误导性,当您考虑相应的GCC版本时,这些版本之间的差异实际上很大:
GCC 4.4和4.9之间的C ++ 14实现,以及C ++ 17和各种实验提案之后的主要工作。
来自libstdc ++&#39; s FAQ:
通常磁盘上库的大小并不明显......
。 。 。目标文件 问题包含模板类和模板函数, 预先实例化,并将它们分开导致严重的维护 头痛。
简而言之 - 关于尺寸的做法不多。如果你真的感兴趣,你可以看看使用readelf -a libname.so
您可以随时降级到较旧的GCC版本,该版本将附带较小的libstdc ++。
话虽如此,在Ubuntu上,libstdc++.so.6.0.24
的大小为1.54MB,所以实际上并没有那么多增长。您的特定发行版可能有问题,或者您可能抓住了调试版本。您可以尝试使用strip libstdc++.so.6.0.24
剥离调试符号(strip
实用程序是binutils
的一部分)。