├── README.md └── zerotier ├── Config.in ├── Makefile ├── files └── etc │ ├── config │ └── zerotier │ ├── init.d │ └── zerotier │ └── uci-defaults │ └── 80-zt-migration └── patches ├── 0001-fix-miniupnpc-natpmp-include-path.patch ├── 0002-remove-PIE-options.patch ├── 0003-fix-compilation-for-arm_cortex-a7-neon.patch ├── 0004-add-missing-libatomic.patch └── 0005-remove-noexecstack.patch /README.md: -------------------------------------------------------------------------------- 1 | # ZeroTier-OpenWrt 2 | 3 | *ZeroTier has been merged into the [official package repository](https://openwrt.org/packages/pkgdata/zerotier) and can be selected using the opkg package management tool.* 4 | 5 | [ZeroTier One](https://www.zerotier.com) is a program to create a global provider-independent virtual private cloud. 6 | This project offers OpenWrt packages for ZeroTier. 7 | 8 | ## Installing package 9 | 10 | Download the [prebuild package](https://github.com/mwarning/zerotier-openwrt/releases) and copy it onto your OpenWrt installation, preferably into the /tmp folder. 11 | 12 | Then install the ipk package file: 13 | 14 | ``` 15 | opkg install zerotier_*.ipk 16 | ``` 17 | 18 | Now enable ZeroTier: 19 | 20 | ``` 21 | uci set zerotier.global.enabled='1' 22 | uci commit zerotier 23 | ``` 24 | 25 | Now start ZeroTier 26 | 27 | ``` 28 | /etc/init.d/zerotier start 29 | ``` 30 | 31 | ## Compiling from Sources 32 | 33 | To include ZeroTier One into your OpenWrt image or to create 34 | an .ipk package (equivalent to Debians .deb files), 35 | you have to build an OpenWrt image. 36 | 37 | To build OpenWrt on Debian, you need to install these packages: 38 | 39 | ``` 40 | sudo apt-get install subversion g++ zlib1g-dev build-essential git python 41 | sudo apt-get install libncurses5-dev gawk gettext unzip file libssl-dev wget 42 | ``` 43 | 44 | Now prepare OpenWrt: 45 | 46 | ``` 47 | git clone https://github.com/openwrt/openwrt 48 | cd openwrt 49 | 50 | ./scripts/feeds update -a 51 | ./scripts/feeds install -a 52 | ``` 53 | 54 | Now you can insert the zerotier package using a package feed (see `Add package by feed`) or add the package manually (see `Add package by hand`). 55 | 56 | ### Add package by feed 57 | 58 | A feed is the standard way packages are made available to the OpenWrt build system. 59 | 60 | Put this line in your feeds list file (e.g. `feeds.conf`, or `feeds.conf.default`) 61 | 62 | ``` 63 | src-git zerotier https://github.com/mwarning/zerotier-openwrt.git 64 | ``` 65 | 66 | Update and install the new feed 67 | 68 | ``` 69 | ./scripts/feeds update zerotier 70 | ./scripts/feeds install zerotier 71 | ``` 72 | 73 | Now continue with the building packages section (see `Building Packages`). 74 | 75 | ### Add package by hand 76 | 77 | ``` 78 | git clone https://github.com/mwarning/zerotier-openwrt.git 79 | cp -rf zerotier-openwrt/zerotier package/ 80 | rm -rf zerotier-openwrt/ 81 | ``` 82 | 83 | Now continue with the building packages section (see `Building Packages`). 84 | 85 | ### Building Packages 86 | 87 | Configure packages: 88 | 89 | ``` 90 | make menuconfig 91 | ``` 92 | 93 | Now select the appropiate "Target System" and "Target Profile" 94 | depending on what target chipset/router you want to build for. 95 | Also mark the ZeroTier package under Network ---> VPN ---> <\*> zerotier. 96 | 97 | Now compile/build everything: 98 | 99 | ``` 100 | make -j8 101 | ``` 102 | 103 | The images and all \*.ipk packages are now inside the `bin/` folder, including the zerotier package. 104 | You can install the ZeroTier .ipk on the target device using `opkg install `. 105 | 106 | For details please check the OpenWrt documentation. 107 | 108 | #### Build bulk packages 109 | 110 | For a release, it is useful the build packages at a bulk for multiple targets: 111 | 112 | ``` 113 | #!/bin/sh 114 | 115 | # dump-target-info.pl is used to get all targets configurations: 116 | # https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob;f=scripts/dump-target-info.pl 117 | 118 | ./scripts/dump-target-info.pl architectures | while read pkgarch target1 rest; do 119 | echo "CONFIG_TARGET_${target1%/*}=y" > .config 120 | echo "CONFIG_TARGET_${target1%/*}_${target1#*/}=y" >> .config 121 | echo "CONFIG_PACKAGE_example1=y" >> .config 122 | 123 | # Debug output 124 | echo "pkgarch: $pkgarch, target1: $target1" 125 | 126 | make defconfig 127 | make -j4 tools/install 128 | make -j4 toolchain/install 129 | 130 | # Build package 131 | make package/zerotier/{clean,compile} 132 | 133 | # Free space (optional) 134 | rm -rf build_dir/target-* 135 | rm -rf build_dir/toolchain-* 136 | done 137 | ``` 138 | -------------------------------------------------------------------------------- /zerotier/Config.in: -------------------------------------------------------------------------------- 1 | menu "Configuration" 2 | depends on PACKAGE_zerotier 3 | 4 | config ZEROTIER_ENABLE_DEBUG 5 | bool "Build in debug mode" 6 | depends on PACKAGE_zerotier 7 | default n 8 | 9 | config ZEROTIER_ENABLE_SELFTEST 10 | bool "Build a self test program" 11 | depends on PACKAGE_zerotier 12 | default n 13 | 14 | endmenu 15 | -------------------------------------------------------------------------------- /zerotier/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # This is free software, licensed under the GNU General Public License v2. 3 | # See /LICENSE for more information. 4 | # 5 | 6 | include $(TOPDIR)/rules.mk 7 | 8 | PKG_NAME:=zerotier 9 | PKG_VERSION:=1.14.1 10 | PKG_RELEASE:=1 11 | 12 | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz 13 | PKG_SOURCE_URL:=https://codeload.github.com/zerotier/ZeroTierOne/tar.gz/$(PKG_VERSION)? 14 | PKG_HASH:=4f9f40b27c5a78389ed3f3216c850921f6298749e5819e9f2edabb2672ce9ca0 15 | PKG_BUILD_DIR:=$(BUILD_DIR)/ZeroTierOne-$(PKG_VERSION) 16 | 17 | PKG_MAINTAINER:=Moritz Warning 18 | PKG_LICENSE:=BSL 1.1 19 | PKG_LICENSE_FILES:=LICENSE.txt 20 | 21 | PKG_ASLR_PIE:=0 22 | PKG_BUILD_PARALLEL:=1 23 | PKG_BUILD_FLAGS:=gc-sections 24 | 25 | include $(INCLUDE_DIR)/package.mk 26 | 27 | define Package/zerotier 28 | SECTION:=net 29 | CATEGORY:=Network 30 | DEPENDS:=+libpthread +libstdcpp +kmod-tun +ip +libminiupnpc +libnatpmp +libatomic 31 | TITLE:=Create flat virtual Ethernet networks of almost unlimited size 32 | URL:=https://www.zerotier.com 33 | SUBMENU:=VPN 34 | endef 35 | 36 | define Package/zerotier/description 37 | ZeroTier creates a global provider-independent virtual private cloud network. 38 | endef 39 | 40 | define Package/zerotier/config 41 | source "$(SOURCE)/Config.in" 42 | endef 43 | 44 | ifeq ($(CONFIG_ZEROTIER_ENABLE_DEBUG),y) 45 | MAKE_FLAGS += ZT_DEBUG=1 46 | endif 47 | 48 | MAKE_FLAGS += \ 49 | ZT_EMBEDDED=1 \ 50 | ZT_SSO_SUPPORTED=0 \ 51 | DEFS="" \ 52 | OSTYPE="Linux" \ 53 | 54 | define Build/Compile 55 | $(call Build/Compile/Default,one) 56 | ifeq ($(CONFIG_ZEROTIER_ENABLE_SELFTEST),y) 57 | $(call Build/Compile/Default,selftest) 58 | endif 59 | endef 60 | 61 | # Make binary smaller 62 | TARGET_CFLAGS += -Wl,-z,noexecstack 63 | TARGET_LDFLAGS += -Wl,--as-needed -Wl,-z,noexecstack 64 | 65 | define Package/zerotier/conffiles 66 | /etc/config/zerotier 67 | endef 68 | 69 | define Package/zerotier/install 70 | $(INSTALL_DIR) $(1)/usr/bin 71 | $(INSTALL_BIN) $(PKG_BUILD_DIR)/zerotier-one $(1)/usr/bin/ 72 | $(LN) zerotier-one $(1)/usr/bin/zerotier-cli 73 | $(LN) zerotier-one $(1)/usr/bin/zerotier-idtool 74 | $(INSTALL_DIR) $(1)/etc/uci-defaults 75 | 76 | ifeq ($(CONFIG_ZEROTIER_ENABLE_SELFTEST),y) 77 | $(INSTALL_BIN) $(PKG_BUILD_DIR)/zerotier-selftest $(1)/usr/bin/ 78 | endif 79 | 80 | $(CP) ./files/* $(1)/ 81 | endef 82 | 83 | $(eval $(call BuildPackage,zerotier)) 84 | -------------------------------------------------------------------------------- /zerotier/files/etc/config/zerotier: -------------------------------------------------------------------------------- 1 | 2 | config zerotier 'global' 3 | # Sets whether ZeroTier is enabled or not 4 | option enabled '0' 5 | # Sets the ZeroTier listening port (default 9993; set to 0 for random) 6 | #option port '9993' 7 | # Client secret (leave blank to generate a secret on first run) 8 | option secret '' 9 | # Path of the optional file local.conf (see documentation at 10 | # https://docs.zerotier.com/config#local-configuration-options) 11 | #option local_conf_path '/etc/zerotier.conf' 12 | # Persistent configuration directory (to perform other configurations such 13 | # as controller mode or moons, etc.) 14 | #option config_path '/etc/zerotier' 15 | # Copy the contents of the persistent configuration directory to memory 16 | # instead of linking it, this avoids writing to flash 17 | #option copy_config_path '1' 18 | 19 | # Network configuration, you can have as many configurations as networks you 20 | # want to join (the network name is optional) 21 | config network 'earth' 22 | # Identifier of the network you wish to join 23 | option id '8056c2e21c000001' 24 | # Sets whether this network is enabled or disabled. If it is not 25 | # enabled ZeroTier will not join it. 26 | option enabled '1' 27 | # Network configuration parameters (all are optional, if not indicated the 28 | # default values are set, see documentation at 29 | # https://docs.zerotier.com/config/#network-specific-configuration) 30 | option allow_managed '1' 31 | option allow_global '0' 32 | option allow_default '0' 33 | option allow_dns '0' 34 | 35 | # Example of a second network (unnamed as it is optional) 36 | #config network 37 | # option id '1234567890123456' 38 | # option enabled '0' 39 | # option allow_managed '1' 40 | # option allow_global '0' 41 | # option allow_default '0' 42 | # option allow_dns '0' 43 | 44 | -------------------------------------------------------------------------------- /zerotier/files/etc/init.d/zerotier: -------------------------------------------------------------------------------- 1 | #!/bin/sh /etc/rc.common 2 | 3 | START=90 4 | 5 | USE_PROCD=1 6 | 7 | PROG=/usr/bin/zerotier-one 8 | CONFIG_PATH=/var/lib/zerotier-one 9 | 10 | join_network() { 11 | local section="${1}" 12 | local id enabled allow_managed allow_global allow_default allow_dns 13 | 14 | config_get id "${section}" 'id' 15 | config_get_bool enabled "${section}" 'enabled' 1 16 | config_get_bool allow_managed "${section}" 'allow_managed' 1 17 | config_get_bool allow_global "${section}" 'allow_global' 0 18 | config_get_bool allow_default "${section}" 'allow_default' 0 19 | config_get_bool allow_dns "${section}" 'allow_dns' 0 20 | 21 | if [ -n "${id}" -a ${enabled} -eq 1 ]; then 22 | # an (empty) config file will cause ZT to join a network 23 | touch "${CONFIG_PATH}"/networks.d/"${id}".conf 24 | echo "allowManaged=${allow_managed}" > "${CONFIG_PATH}"/networks.d/"${id}".local.conf 25 | echo "allowGlobal=${allow_global}" >> "${CONFIG_PATH}"/networks.d/"${id}".local.conf 26 | echo "allowDefault=${allow_default}" >> "${CONFIG_PATH}"/networks.d/"${id}".local.conf 27 | echo "allowDNS=${allow_dns}" >> "${CONFIG_PATH}"/networks.d/"${id}".local.conf 28 | fi 29 | } 30 | 31 | start_service() { 32 | config_load zerotier 33 | local enabled port secret local_conf_path config_path copy_config_path 34 | local args="" 35 | 36 | config_get_bool enabled 'global' 'enabled' 0 37 | config_get port 'global' 'port' 38 | config_get secret 'global' 'secret' 39 | config_get local_conf_path 'global' 'local_conf_path' 40 | config_get config_path 'global' 'config_path' 41 | config_get_bool copy_config_path 'global' 'copy_config_path' 0 42 | 43 | if [ ${enabled} -eq 0 ]; then 44 | echo "disabled in /etc/config/zerotier" 45 | return 46 | fi 47 | 48 | # Remove existing link or folder 49 | rm -rf "${CONFIG_PATH}" 50 | 51 | # Create link or copy files from config_path to CONFIG_PATH 52 | if [ -n "${config_path}" ]; then 53 | if [ ! -d "${config_path}" ]; then 54 | echo "ZeroTier config_path does not exist: ${config_path}" 1>&2 55 | return 56 | fi 57 | 58 | if [ ${copy_config_path} -eq 1 ]; then 59 | cp -r "${config_path}" "${CONFIG_PATH}" 60 | else 61 | ln -s "${config_path}" "${CONFIG_PATH}" 62 | fi 63 | fi 64 | 65 | mkdir -p "${CONFIG_PATH}"/networks.d 66 | config_foreach join_network network 67 | 68 | if [ -f "${local_conf_path}" ]; then 69 | ln -s "${local_conf_path}" "${CONFIG_PATH}"/local.conf 70 | fi 71 | 72 | if [ -n "${port}" ]; then 73 | args="${args} -p${port}" 74 | fi 75 | 76 | if [ -z "${secret}" ]; then 77 | echo -n "Generating secret - please wait... " 78 | secret="$(zerotier-idtool generate)" 79 | [ ${?} -ne 0 ] && return 1 80 | uci set zerotier.global.secret="${secret}" 81 | uci commit zerotier 82 | echo "done." 83 | fi 84 | 85 | if [ -n "${secret}" ]; then 86 | echo "${secret}" > "${CONFIG_PATH}"/identity.secret 87 | # make sure there is not previous identity.public 88 | rm -f "${CONFIG_PATH}"/identity.public 89 | fi 90 | 91 | procd_open_instance 92 | procd_set_param command ${PROG} ${args} 93 | procd_set_param stderr 1 94 | procd_set_param respawn 95 | procd_close_instance 96 | } 97 | 98 | stop_service() { 99 | rm -rf "${CONFIG_PATH}" 100 | } 101 | 102 | reload_service() { 103 | stop 104 | start 105 | } 106 | 107 | service_triggers() { 108 | procd_add_reload_trigger 'zerotier' 109 | } 110 | -------------------------------------------------------------------------------- /zerotier/files/etc/uci-defaults/80-zt-migration: -------------------------------------------------------------------------------- 1 | # Convert the join list into networks 2 | nets=$(uci -q get zerotier.@zerotier[0].join) 3 | 4 | if [ -n "$nets" ]; then 5 | for net in ${nets}; do 6 | sid=$(uci add zerotier network) 7 | uci set zerotier.${sid}.id=${net} 8 | done 9 | uci delete zerotier.@zerotier[0].join 10 | 11 | # Rename local conf (only if defined) 12 | uci -q rename zerotier.@zerotier[0].local_conf='local_conf_path' || true 13 | 14 | # Rename configuration to global 15 | uci rename zerotier.@zerotier[0]='global' 16 | 17 | # Commit all changes 18 | uci commit zerotier 19 | fi 20 | -------------------------------------------------------------------------------- /zerotier/patches/0001-fix-miniupnpc-natpmp-include-path.patch: -------------------------------------------------------------------------------- 1 | From ec02787ae7c5b6e906ab50bcebcd676d4219c812 Mon Sep 17 00:00:00 2001 2 | From: Moritz Warning 3 | Date: Tue, 17 Sep 2024 14:17:08 +0200 4 | Subject: [PATCH 1/5] fix miniupnpc natpmp include path 5 | 6 | --- 7 | make-linux.mk | 6 +++--- 8 | 1 file changed, 3 insertions(+), 3 deletions(-) 9 | 10 | --- a/make-linux.mk 11 | +++ b/make-linux.mk 12 | @@ -26,8 +26,8 @@ TIMESTAMP=$(shell date +"%Y%m%d%H%M") 13 | # otherwise build into binary as done on Mac and Windows. 14 | ONE_OBJS+=osdep/PortMapper.o 15 | override DEFS+=-DZT_USE_MINIUPNPC 16 | -MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2..*"' /usr/include/miniupnpc/miniupnpc.h && echo 1) 17 | -#MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' /usr/include/miniupnpc/miniupnpc.h && echo 1) 18 | +MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2..*"' $(STAGING_DIR)/usr/include/miniupnpc/miniupnpc.h && echo 1) 19 | +#MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' $(STAGING_DIR)/usr/include/miniupnpc/miniupnpc.h && echo 1) 20 | ifeq ($(MINIUPNPC_IS_NEW_ENOUGH),1) 21 | override DEFS+=-DZT_USE_SYSTEM_MINIUPNPC 22 | LDLIBS+=-lminiupnpc 23 | @@ -35,7 +35,7 @@ else 24 | override DEFS+=-DMINIUPNP_STATICLIB -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DOS_STRING="\"Linux\"" -DMINIUPNPC_VERSION_STRING="\"2.0\"" -DUPNP_VERSION_STRING="\"UPnP/1.1\"" -DENABLE_STRNATPMPERR 25 | ONE_OBJS+=ext/miniupnpc/connecthostport.o ext/miniupnpc/igd_desc_parse.o ext/miniupnpc/minisoap.o ext/miniupnpc/minissdpc.o ext/miniupnpc/miniupnpc.o ext/miniupnpc/miniwget.o ext/miniupnpc/minixml.o ext/miniupnpc/portlistingparse.o ext/miniupnpc/receivedata.o ext/miniupnpc/upnpcommands.o ext/miniupnpc/upnpdev.o ext/miniupnpc/upnperrors.o ext/miniupnpc/upnpreplyparse.o 26 | endif 27 | -ifeq ($(wildcard /usr/include/natpmp.h),) 28 | +ifeq ($(wildcard $(STAGING_DIR)/usr/include/natpmp.h),) 29 | ONE_OBJS+=ext/libnatpmp/natpmp.o ext/libnatpmp/getgateway.o 30 | else 31 | LDLIBS+=-lnatpmp 32 | -------------------------------------------------------------------------------- /zerotier/patches/0002-remove-PIE-options.patch: -------------------------------------------------------------------------------- 1 | From 81a632c99b581790344729ad327eb473c4c05260 Mon Sep 17 00:00:00 2001 2 | From: Moritz Warning 3 | Date: Tue, 17 Sep 2024 15:36:36 +0200 4 | Subject: [PATCH 2/5] remove PIE options 5 | 6 | --- 7 | make-linux.mk | 6 +++--- 8 | 1 file changed, 3 insertions(+), 3 deletions(-) 9 | 10 | --- a/make-linux.mk 11 | +++ b/make-linux.mk 12 | @@ -333,7 +333,7 @@ ifeq ($(ZT_CONTROLLER),1) 13 | endif 14 | 15 | # ARM32 hell -- use conservative CFLAGS 16 | -ifeq ($(ZT_ARCHITECTURE),3) 17 | +ifeq (0,3) 18 | ifeq ($(shell if [ -e /usr/bin/dpkg ]; then dpkg --print-architecture; fi),armel) 19 | override CFLAGS+=-march=armv5t -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm 20 | override CXXFLAGS+=-march=armv5t -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm 21 | @@ -360,8 +360,8 @@ ifeq ($(ZT_USE_ARM32_NEON_ASM_CRYPTO),1) 22 | endif 23 | 24 | # Position Independence 25 | -override CFLAGS+=-fPIC -fPIE 26 | -override CXXFLAGS+=-fPIC -fPIE 27 | +#override CFLAGS+=-fPIC -fPIE 28 | +#override CXXFLAGS+=-fPIC -fPIE 29 | 30 | # Non-executable stack 31 | override LDFLAGS+=-Wl,-z,noexecstack 32 | -------------------------------------------------------------------------------- /zerotier/patches/0003-fix-compilation-for-arm_cortex-a7-neon.patch: -------------------------------------------------------------------------------- 1 | From 71ed5b791fb0f7bfe1f564726fdc979b71313fbe Mon Sep 17 00:00:00 2001 2 | From: Moritz Warning 3 | Date: Tue, 17 Sep 2024 15:38:01 +0200 4 | Subject: [PATCH 3/5] fix compilation for arm_cortex a7 neon 5 | 6 | --- 7 | node/Constants.hpp | 2 +- 8 | 1 file changed, 1 insertion(+), 1 deletion(-) 9 | 10 | --- a/node/Constants.hpp 11 | +++ b/node/Constants.hpp 12 | @@ -123,7 +123,7 @@ 13 | #include 14 | #endif 15 | 16 | -#if (defined(__ARM_NEON) || defined(__ARM_NEON__) || defined(ZT_ARCH_ARM_HAS_NEON)) 17 | +#if (defined(__aarch64__) || defined(ZT_ARCH_ARM_HAS_NEON)) 18 | #if (defined(__APPLE__) && !defined(__LP64__)) || (defined(__ANDROID__) && defined(__arm__)) 19 | #ifdef ZT_ARCH_ARM_HAS_NEON 20 | #undef ZT_ARCH_ARM_HAS_NEON 21 | -------------------------------------------------------------------------------- /zerotier/patches/0004-add-missing-libatomic.patch: -------------------------------------------------------------------------------- 1 | From d6197554b3f52ee9d8d81374141aa82014b4fc7b Mon Sep 17 00:00:00 2001 2 | From: Moritz Warning 3 | Date: Tue, 17 Sep 2024 15:38:34 +0200 4 | Subject: [PATCH 4/5] add missing libatomic 5 | 6 | --- 7 | make-linux.mk | 2 +- 8 | 1 file changed, 1 insertion(+), 1 deletion(-) 9 | 10 | --- a/make-linux.mk 11 | +++ b/make-linux.mk 12 | @@ -11,7 +11,7 @@ endif 13 | 14 | INCLUDES?=-Irustybits/target -isystem ext -Iext/prometheus-cpp-lite-1.0/core/include -Iext-prometheus-cpp-lite-1.0/3rdparty/http-client-lite/include -Iext/prometheus-cpp-lite-1.0/simpleapi/include 15 | DEFS?= 16 | -LDLIBS?= 17 | +LDLIBS?=-latomic 18 | DESTDIR?= 19 | EXTRA_DEPS?= 20 | 21 | -------------------------------------------------------------------------------- /zerotier/patches/0005-remove-noexecstack.patch: -------------------------------------------------------------------------------- 1 | From 8e89af98ac00b1c9c019865faca7479fa0de6084 Mon Sep 17 00:00:00 2001 2 | From: Moritz Warning 3 | Date: Tue, 17 Sep 2024 21:26:08 +0200 4 | Subject: [PATCH 5/5] remove noexecstack 5 | 6 | --- 7 | make-linux.mk | 2 +- 8 | 1 file changed, 1 insertion(+), 1 deletion(-) 9 | 10 | --- a/make-linux.mk 11 | +++ b/make-linux.mk 12 | @@ -364,7 +364,7 @@ endif 13 | #override CXXFLAGS+=-fPIC -fPIE 14 | 15 | # Non-executable stack 16 | -override LDFLAGS+=-Wl,-z,noexecstack 17 | +#override LDFLAGS+=-Wl,-z,noexecstack 18 | 19 | .PHONY: all 20 | all: one 21 | --------------------------------------------------------------------------------