一周前,我可以毫无问题地编译并链接我的项目(C++)。但是,在本周早些时候做了sudo apt-get dist-upgrade
之后,我不能再链接程序了。
我得到的错误是这样的:
Compiling CEF Client
scons: Reading SConscript files ...
Compiling cef_client
Build type: release-with-debug
scons: done reading SConscript files.
scons: Building targets ...
Compiling ==> 'AttributeBinding.cpp'
Compiling ==> 'ClientApp.cpp'
Compiling ==> 'DuplicateAttributeException.cpp'
Compiling ==> 'DuplicateFunctionException.cpp'
Compiling ==> 'FunctionBinding.cpp'
Compiling ==> 'Main.cpp'
Compiling ==> 'ObjectBinding.cpp'
Compiling ==> 'Logger.cpp'
Linking program ==> 'cef3_client'
/home/jarrett/projects/icebreakers/glr/deps/boost/lib/libboost_log.so: undefined reference to `memcpy@GLIBC_2.14'
collect2: error: ld returned 1 exit status
scons: *** [build/cef3_client] Error 1
scons: building terminated because of errors.
问题是,我在同一台计算机上构建了boost日志库,并且在我做了
dist-upgrade
之前,它运行良好。在此之前,包含文件还有其他一些问题,我通过重新安装
gcc-4.7
和gcc-4.7-base
来解决此问题。我也尝试使用libc
重新安装sudo aptitude reinstall libc6 libc6-dbg libc6-dev
,但没有解决任何问题。我还尝试重新安装了名称为
glib
的整个软件包:sudo aptitude reinstall gir1.2-glib-2.0 gir1.2-telepathyglib-0.12 gir1.2-upowerglib-1.0 glib-networking glib-networking-common glib-networking-services libavahi-glib1 libcglib-java libdbus-glib-1-2 libdbus-glib-1-dev libdbus-glib1.0-cil libgeocode-glib0 libghc-glib-dev libglib-perl libglib2.0-0 libglib2.0-bin libglib2.0-cil libglib2.0-cil-dev libglib2.0-data libglib2.0-dev libglibmm-2.4-1c2a libglibmm-2.4-dev libjson-glib-1.0-0 libnm-glib-vpn1 libnm-glib4 libpackagekit-glib2-14 libpoppler-glib8 libpulse-mainloop-glib0 libsofia-sip-ua-glib3 libtelepathy-glib0 libupower-glib1
我还尝试了重新安装
build-essentials
,gcc
和g++
,但没有任何效果。任何人都知道这里发生了什么吗?
最佳答案
您需要针对升级的glibc重新编译Boost日志库。您现在已将.so文件编译为以前的版本。
关于c++ - 升级到Debian 7.5;现在 'memcpy@GLIBC_2.14'是未定义的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24347227/