version `CXXABI_1.3.8' not found (required by ...)

Programımı derledikten sonra çalıştırdığımda aşağıdaki hatayı alıyorum:

./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8' not found (required by ./prog) ./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: versionGLIBCXX_3.4.19' not found (required by ./prog) ./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/arman/lib/boost_1_55_0/stage/lib/libboost_serialization.so.1.55.0)

Hem boost 1.55.0 hem de gcc 4.9.0 sırasıyla ~/lib/boost_1_55_0 ve ~/lib/gcc-4.9.0 içinde kurulu ve sanırım bu yüzden sorun yaşıyorum, ancak bunu nasıl düzelteceğim konusunda emin değilim.

benim ~/.profile dosyam aşağıdaki satırı içeriyor:

export LD_LIBRARY_PATH=/home/user/lib/boost_1_55_0/stage/lib:$LD_LIBRARY_PATH

Çözüm

GCC 4.9, sisteminizdeki libstdc++'ın sahip olduğundan daha yeni bir C++ ABI sürümü sunar, bu nedenle yükleyiciye `LD_LIBRARY_PATH'e bu yolu ekleyerek kütüphanenin bu daha yeni sürümünü kullanmasını söylemeniz gerekir. Ne yazık ki, GCC 4.9 kurulumunuz için libstdc++'ın nerede olduğunu size doğrudan söyleyemem, çünkü bu GCC'yi nasıl yapılandırdığınıza bağlıdır. Bu yüzden şu tarz bir şeye ihtiyacınız var:

export LD_LIBRARY_PATH=/home/user/lib/gcc-4.9.0/lib:/home/user/lib/boost_1_55_0/stage/lib:$LD_LIBRARY_PATH

Gerçek yolun farklı olabileceğini unutmayın (orada `x86_64-unknown-linux-gnu/4.9.0´ veya benzeri gibi gizli bir alt dizin olabilir).

Yorumlar (2)