我最近将我的开发机器升级到Ubuntu 16.04
gcc的默认版本为gcc-5.3.1
。
我遇到的问题是供应商提供的库只使用gcc-4.9构建,它与gcc-5不兼容。
我已经要求供应商提供该库的新版本,但这种情况不太可能很快发生。
与此同时,我从Ubuntu的软件包回购中安装了gcc-4.9.3
。
我现在安装了gcc-4.9和gcc-5:
ls -l /usr/bin/gcc*
lrwxrwxrwx 1 root root 5 May 9 11:49 /usr/bin/gcc -> gcc-5
-rwxr-xr-x 1 root root 838008 Apr 13 23:23 /usr/bin/gcc-4.9
-rwxr-xr-x 1 root root 915704 Apr 13 11:29 /usr/bin/gcc-5
我尝试使用gcc-4.9构建我们的源代码,但现在我遇到了相同的ABI问题,但是反过来。
我遇到的问题是我们通常会从发行版软件包中安装一堆依赖项
sudo apt-get install \
python-dev \
libbz2-dev \
libboost-all-dev \
libprotobuf-dev \
libgoogle-perftools-dev \
postgresql \
libpqxx-dev
虽然我可以将我的构建配置为使用gcc-4.9
mkdir build && cd build
CC=/usr/bin/gcc-4.9 CXX=/usr/bin/g++-4.9 cmake ..
make -j8
我在链接libtcmalloc_minimal.a
,libprotobuf.a
等
因此,我尝试的下一步是删除从发行版repos安装的所有依赖项,并开始从源代码构建依赖项。
CC=/usr/bin/gcc-4.9 CXX=/usr/bin/g++-4.9 ./configure
make -j8
sudo make install
这里的问题是我开始走向一个兔子洞。每个依赖项都有其他依赖项,我不确定它将在何处结束。
另一种选择是降级回Ubuntu 14.04或某些随gcc-4.9而非gcc-5一起发布的版本。
在我尝试这个thurmonuclear选项之前,我想知道是否有更好的方法来做到这一点?
也许可以从使用gcc-4.9构建的repos或其他方式安装?