cloudwu/skynet

编译错误

tqing1128 opened this issue · 6 comments

centos 7.9.2009
gcc version 4.9.4 (GCC)

更新到最新的 master 分支后编译报错:

In file included from skynet-src/spinlock.h:50:0,
                 from lualib-src/lua-debugchannel.c:9:
skynet-src/atomic.h:61:46: error: unknown type name 'uintptr_t'
 ATOM_CAS_POINTER(STD_ atomic_uintptr_t *ptr, uintptr_t oval, uintptr_t nval) {
                                              ^
skynet-src/atomic.h:61:62: error: unknown type name 'uintptr_t'
 ATOM_CAS_POINTER(STD_ atomic_uintptr_t *ptr, uintptr_t oval, uintptr_t nval) {

从下面这个提交开始出现编译错误
Compat lua compile as cpp (#1568)
9fd7a51

是不是要升级 gcc?是的话现在要求的最低版本是多少?

升级
yum install centos-release-scl -y
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> ~/.bashrc

5.0以上

增加 #include <stdint.h> 试试?

skynet-src/atomic.h

#ifdef __STDC_NO_ATOMICS__
...
#else
#include <stdint.h>
...
#endif

如上所示位置加了 #include <stdint.h> 之后编译正常了

只试了 macOS 和 centos,其他没有环境

我不知道加在这里合不合适,还是您来改吧 @cloudwu