Build error on ARM device due to ld flags

John graysky at archlinux.us
Wed Jan 23 22:07:47 CET 2019


I am running Arch ARM (aarch64) on an ODROID-C2 using gcc v8.2.1.
Arch ARM which ships with the following LDFLAGS as defaults,
"-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"

When I build wireguard on this device as shown below, I get this error
but am unsure why:

ld: unrecognized option '-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
ld: use the --help option for usage information
make[2]: *** [scripts/Makefile.build:393:
/scratch/WireGuard-0.0.20190123/src/wireguard.o] Error 1
make[1]: *** [Makefile:1358:
_module_/scratch/WireGuard-0.0.20190123/src] Error 2
make: *** [Makefile:36: module] Error 2

If I remove the '-Wl' switch from the distro default, it builds
without error.  Any advice is appreciated.

Complete build log and my FLAGS:

% export CPPFLAGS="-D_FORTIFY_SOURCE=2"
% export CFLAGS="-march=armv8-a -O2 -pipe -fstack-protector-strong -fno-plt"
% export CXXFLAGS="-march=armv8-a -O2 -pipe -fstack-protector-strong -fno-plt"
% export LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
% export DEBUG_CFLAGS="-g -fvar-tracking-assignments"
% export DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"

% cd WireGuard-0.0.20190123
% make -j5 -C src
make: Entering directory '/scratch/WireGuard-0.0.20190123/src'
  CC      /scratch/WireGuard-0.0.20190123/src/tools/wg.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/config.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/show.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/terminal.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/ipc.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/mnlg.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/encoding.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/curve25519.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/setconf.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/genkey.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/showconf.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/pubkey.o
  CC      /scratch/WireGuard-0.0.20190123/src/tools/set.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/main.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/device.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/noise.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/peer.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/timers.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/queueing.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/send.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/receive.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/socket.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/hashtables.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/allowedips.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/ratelimiter.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/cookie.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/netlink.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/crypto/zinc/chacha20/chacha20.o
  PERLASM /scratch/WireGuard-0.0.20190123/src/crypto/zinc/chacha20/chacha20-arm64.S
  CC [M]  /scratch/WireGuard-0.0.20190123/src/crypto/zinc/poly1305/poly1305.o
  PERLASM /scratch/WireGuard-0.0.20190123/src/crypto/zinc/poly1305/poly1305-arm64.S
  CC [M]  /scratch/WireGuard-0.0.20190123/src/crypto/zinc/chacha20poly1305.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/crypto/zinc/blake2s/blake2s.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/crypto/zinc/curve25519/curve25519.o
  LD      /scratch/WireGuard-0.0.20190123/src/tools/wg
  CC [M]  /scratch/WireGuard-0.0.20190123/src/compat/siphash/siphash.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/compat/dst_cache/dst_cache.o
  CC [M]  /scratch/WireGuard-0.0.20190123/src/compat/udp_tunnel/udp_tunnel.o
  AS [M]  /scratch/WireGuard-0.0.20190123/src/crypto/zinc/chacha20/chacha20-arm64.o
  AS [M]  /scratch/WireGuard-0.0.20190123/src/crypto/zinc/poly1305/poly1305-arm64.o
  LD [M]  /scratch/WireGuard-0.0.20190123/src/wireguard.o
ld: unrecognized option '-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
ld: use the --help option for usage information
make[2]: *** [scripts/Makefile.build:393:
/scratch/WireGuard-0.0.20190123/src/wireguard.o] Error 1
make[1]: *** [Makefile:1358:
_module_/scratch/WireGuard-0.0.20190123/src] Error 2
make: *** [Makefile:36: module] Error 2
make: Leaving directory '/scratch/WireGuard-0.0.20190123/src'


More information about the WireGuard mailing list