ShadowsocksR-Live / shadowsocksr-native

翻墙 从容穿越党国敏感日 ShadowsocksR (SSRoT) native implementation for all platforms, GFW terminator
https://github.com/ShadowsocksR-Live/shadowsocksr-native/wiki
GNU General Public License v3.0
2.74k stars 765 forks source link

mipsel-linux-gnu 交叉编译失败 #152

Closed foobartech closed 4 years ago

foobartech commented 4 years ago

Please answer these questions before submitting your issue. Thanks!

What version of shadowsocks-native are you using?

master ac63eb70fdc0e5ad3d1cb15358fc57aa6278f1ac

What operating system are you using?

Debian

What did you do?

尝试交叉编译mipsel版ssr-native

What did you expect to see?

编译成功

What did you see instead?

编译失败

What is your config in detail (with all sensitive info masked)?

编译过程

sudo apt-get install --no-install-recommends build-essential autoconf libtool asciidoc xmlto -y
sudo apt-get install git gcc g++ gdb cmake automake -y

git clone https://github.com/ShadowsocksR-Live/shadowsocksr-native.git ssr-n
cd ssr-n

git submodule update --init
git submodule foreach -q 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'

sudo apt install gcc-mipsel-linux-gnu -y

mkdir build && cd build
cmake -DCMAKE_EXE_LINKER_FLAGS=-static -DCMAKE_C_COMPILER=mipsel-linux-gnu-gcc -DCMAKE_C_FLAGS=-s ..
make

[ 80%] Building C object src/CMakeFiles/ssr-client.dir/__/depends/http-parser/http_parser.c.o
[ 80%] Building C object src/CMakeFiles/ssr-client.dir/__/depends/http-parser/http_parser_wrapper.c.o
[ 80%] Building C object src/CMakeFiles/ssr-client.dir/cache.c.o
[ 81%] Building C object src/CMakeFiles/ssr-client.dir/encrypt.c.o
[ 81%] Building C object src/CMakeFiles/ssr-client.dir/ssrbuffer.c.o
[ 81%] Building C object src/CMakeFiles/ssr-client.dir/ssrutils.c.o
[ 82%] Building C object src/CMakeFiles/ssr-client.dir/udprelay.c.o
[ 82%] Building C object src/CMakeFiles/ssr-client.dir/client/listener.c.o
[ 82%] Building C object src/CMakeFiles/ssr-client.dir/client/main.c.o
/home/username/ssr-n/src/client/main.c: In function ‘main’:
/home/username/ssr-n/src/client/main.c:74:12: error: braces around scalar initializer [-Werror]
     struct sigaction sa = { {&sighandler}, {{0}}, 0, NULL };
            ^~~~~~~~~
/home/username/ssr-n/src/client/main.c:74:12: note: (near initialization for ‘sa.sa_flags’)
/home/username/ssr-n/src/client/main.c:74:30: error: initialization of ‘int’ from ‘void (*)(int)’ makes integer from pointer without a cast [-Werror=int-conversion]
     struct sigaction sa = { {&sighandler}, {{0}}, 0, NULL };
                              ^
/home/username/ssr-n/src/client/main.c:74:30: note: (near initialization for ‘sa.sa_flags’)
/home/username/ssr-n/src/client/main.c:74:12: error: braces around scalar initializer [-Werror]
     struct sigaction sa = { {&sighandler}, {{0}}, 0, NULL };
            ^~~~~~~~~
/home/username/ssr-n/src/client/main.c:74:12: note: (near initialization for ‘sa.__sigaction_handler.sa_handler’)
/home/username/ssr-n/src/client/main.c:74:54: error: initialization of ‘long unsigned int’ from ‘void *’ makes integer from pointer without a cast [-Werror=int-conversion]
     struct sigaction sa = { {&sighandler}, {{0}}, 0, NULL };
                                                      ^~~~
/home/username/ssr-n/src/client/main.c:74:54: note: (near initialization for ‘sa.sa_mask.__val[1]’)
/home/username/ssr-n/src/client/main.c:74:27: error: missing braces around initializer [-Werror=missing-braces]
     struct sigaction sa = { {&sighandler}, {{0}}, 0, NULL };
                           ^
                                                   {{      }}
/home/username/ssr-n/src/client/main.c:74:12: error: missing initializer for field ‘sa_restorer’ of ‘struct sigaction’ [-Werror=missing-field-initializers]
     struct sigaction sa = { {&sighandler}, {{0}}, 0, NULL };
            ^~~~~~~~~
In file included from /usr/mipsel-linux-gnu/include/signal.h:226,
                 from /usr/mipsel-linux-gnu/include/sys/param.h:28,
                 from /home/username/ssr-n/depends/libuv/include/uv/unix.h:41,
                 from /home/username/ssr-n/depends/libuv/include/uv.h:66,
                 from /home/username/ssr-n/src/client/defs.h:26,
                 from /home/username/ssr-n/src/client/main.c:22:
/usr/mipsel-linux-gnu/include/bits/sigaction.h:52:12: note: ‘sa_restorer’ declared here
     void (*sa_restorer) (void);
            ^~~~~~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [src/CMakeFiles/ssr-client.dir/build.make:167: src/CMakeFiles/ssr-client.dir/client/main.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1617: src/CMakeFiles/ssr-client.dir/all] Error 2
make: *** [Makefile:152: all] Error 2