72d0720da0
While the absl:: namespace is aliased to std:: in a standard win32 build, it also needlessly adds the library to the build process, only to discard most of it at link time. This also makes the distinction between Abseil STL and G++ STL more explicit, to avoid some forms of confusion. From the product page: "...We think not: if you look at the preprocessor conditional structure in our string_view.h you'll see that we are trying to identify whether your C++ installation has std::string_view. If you do, absl::string_view is defined only as an alias to the standard type. If you don't, you get a C++11/C++14 compatible implementation of the type. This means you can adopt Abseil, and for types we are b you can use the type from the absl namespace. As soon as your project is built with the appropriate compiler/standard library version, we'll fall away and leave you with the standard type, albeit spelled funny. Better: as soon as you know that your project will only build with the appropriate language version you can run tools that we will provide to change the places that refer to absl::string_view to spell it std::string_view -- since those are the same type, this is safe to do, even across API boundaries. So, one reason you might want to adopt Abseil: early access to facilities from upcoming C++ standard library releases, with a clear migration path." |
||
---|---|---|
.github | ||
android | ||
client | ||
contrib | ||
crypto | ||
daemon | ||
debian | ||
docker | ||
docs | ||
include | ||
jni | ||
libabyss | ||
libutp | ||
llarp | ||
test | ||
ui-win32 | ||
vendor | ||
win32-setup | ||
.clang-format | ||
.dir-locals.el | ||
.dockerignore | ||
.gitignore | ||
.gitlab-ci.yml | ||
CMakeLists.txt | ||
CONTRIBUTING.md | ||
doc | ||
Doxyfile | ||
LICENSE | ||
lokinet-bootstrap | ||
lokinet-bootstrap-testnet.exe | ||
lokinet-bootstrap.exe | ||
Makefile | ||
module.modulemap | ||
motto.txt | ||
readme.md | ||
run-lokinet.bat |
LokiNet
LokiNet is the reference implementation of LLARP (low latency anonymous routing protocol), a layer 3 onion routing protocol.
You can learn more about the high level design of LLARP here
And you can read the LLARP protocol specification here
Building
Build requirements:
- GNU Make
- CMake
- C++ 17 capable C++ compiler
- rapidjson (if enabling jsonrpc server)
- gcovr (if generating test coverage with gcc)
Linux
build:
$ sudo apt install build-essential cmake git libcap-dev wget rapidjson-dev
$ git clone https://github.com/loki-project/loki-network
$ cd loki-network
$ make -j8
install:
$ sudo make install
FreeBSD
build:
$ pkg install wget cmake git
$ git clone https://github.com/loki-project/loki-network
$ cd loki-network
$ gmake -j8
install (root):
# gmake install
Windows
build (where $ARCH
is your platform - i686
or x86_64
):
$ pacman -Sy base-devel mingw-w64-$ARCH-toolchain git libtool autoconf mingw-w64-$ARCH-cmake
$ git clone https://github.com/loki-project/loki-network.git
$ cd loki-network
$ mkdir -p build; cd build
$ cmake .. -DCMAKE_BUILD_TYPE=[Debug|Release] -DSTATIC_LINK=ON -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DDNS_PORT=53 -G 'Unix Makefiles'
install (elevated) to $PROGRAMFILES/lokinet
or $ProgramFiles(x86)/lokinet
:
$ make install
if cross-compiling, install mingw-w64 from your distro's package manager, or build from source, then:
$ mkdir -p build; cd build
$ export COMPILER=clang # if using clang for windows
$ cmake .. -DCMAKE_BUILD_TYPE=[Debug|Release] -DSTATIC_LINK=ON -DCMAKE_CROSSCOMPILING=ON -DDNS_PORT=53 -DCMAKE_TOOLCHAIN_FILE=../contrib/cross/mingw[32].cmake
this will create a static binary that can be installed anywhere, with no other dependency other than libc (minimum v6.1)
Running on Linux/UNIX/BSD
DO NOT RUN AS ROOT, run as normal user.
to run as client:
$ lokinet -g
$ lokinet-bootstrap
$ lokinet
to run as relay:
$ lokinet -r -g
$ lokinet-bootstrap
$ lokinet
Running on Windows
DO NOT RUN AS ELEVATED USER, run as normal user.
to run as client, run the run-lokinet.bat
batch file as your normal user.
Usage
see the documentation on how to get started.