微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我应该如何处理gcc-4.9和gcc-5之间的ABI不兼容?

我最近升级了我的开发机器到Ubuntu 16.04

gcc的认版本是gcc-5.3.1 。

我有一个供应商提供的库的问题只是使用gcc-4.9编译的,而gcc-4.9与gcc-5不兼容。

我已经要求供应商提供该库的新版本,但不太可能会很快发生。

x86-64 System V ABI在哪里logging?

x86 Linux与Windows?

为什么共享库的ELF标头指定Linux作为OSABI?

每个cpu arch真正的ELF TLS ABI要求是什么?

针对特定的glibc ABI

同时,我从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来构build我们的源代码,但是现在我遇到了相同的ABI问题,但是反过来也是如此。

我遇到的问题是,我们有一堆依赖,我们通常会从发行版软件包中安装它们

sudo apt-get install python-dev libbz2-dev libboost-all-dev libprotobuf-dev libgoogle-perftools-dev postgresql libpqxx-dev

虽然我可以configuration我的版本使用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等链接错误

因此,我尝试的下一步是从发行版中删除所有安装的依赖项,并从源代码开始构build依赖项。

CC=/usr/bin/gcc-4.9 CXX=/usr/bin/g++-4.9 ./configure make -j8 sudo make install

这里的问题是,我开始低头一个兔子洞。 每个依赖项都有其他的依赖关系,我不确定它会在哪里结束。

一个select是降级到Ubuntu 14.04或者某个版本,它随gcc-4.9而不是gcc-5发布。

在我尝试这个thurmonuclear选项之前,我想知道是否有更好的方法来做到这一点?

也许有可能从使用gcc-4.9构build的repos安装,或者其他方式?

你在哪里检查x86-64机器上的系统调用原型?

为什么工具链名称具有单独的操作系统和EABI字段?

ELF生成使用libelf提示

什么寄存器通过Linux x86-64函数调用保存

Windows和ABI兼容性

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐