mirror of
https://github.com/RetroShare/libretroshare.git
synced 2026-09-12 19:50:03 +05:00
rnp builds a findopensslfeatures helper and runs it to enumerate the
OpenSSL features. When cross-compiling it links that helper statically so
it does not need the Android dynamic linker, but OpenSSL 1.1.1
libcrypto.a pulls in dso_dlfcn.o, which references the dl* API, and
CMake's FindOpenSSL does not add ${CMAKE_DL_LIBS} to the OpenSSL::Crypto
interface here. Nothing provides those symbols and build_librnp dies at
ld.lld: error: undefined symbol: dlopen
>>> referenced by dso_dlfcn.c
>>> dso_dlfcn.o:(dlfcn_load) in archive
>>> .../sysroot/usr/lib/libcrypto.a
CMake Error at cmake/Modules/FindOpenSSLFeatures.cmake:149 (message):
Error building findopensslfeatures
The NDK ships a static libdl.a defining dlopen/dlsym/dlclose/dlerror, so
link it explicitly. It is added as a linked library, not through
CMAKE_EXE_LINKER_FLAGS, because it must appear after libcrypto.a on the
link line for the static linker to resolve from it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .github/workflows | ||
| .reuse | ||
| gradle/wrapper | ||
| LICENSES | ||
| misc/Android | ||
| src | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| build.gradle | ||
| CMakeLists.txt | ||
| COPYING | ||
| gradlew | ||
| gradlew.bat | ||
| README.asciidoc | ||
| settings.gradle | ||
// SPDX-FileCopyrightText: 2022 Retroshare Team <contact@retroshare.cc>
// SPDX-FileCopyrightText: 2022-2026 Gioacchino Mazzurco <gio@retroshare.cc>
// SPDX-License-Identifier: CC-BY-SA-4.0
== RetroShare library
RetroShare is a decentralized, private, secure, cross-platform, communication
software.
RetroShare functionalities (file sharing, chat, messages, forums, channels...)
are implemented under the hood by libretroshare which offers a documented C++ and
JSON API.
While RetroShare is an application on its own, libretroshare is meant to be
used as part of other programs, some of them are
https://retroshare.cc[RetroShare-gui],
https://retroshare.cc[RetroShare-service],
https://gitlab.com/elRepo.io/elRepo.io-android[elRepo.io]
(let us know if there are more).
=== Continuous integration
image:https://gitlab.com/RetroShare/libretroshare/badges/master/pipeline.svg[link="https://gitlab.com/RetroShare/libretroshare/-/commits/master",title="pipeline status"]
=== Developer Documentation
All public API methods are documented with Doxygen comments, so the most updated
way to read documentation is reading those comments in `src/retroshare/`.
To use libretroshare as part of your Android application we suggest to add our
maven repository, and then specify the variant and version that fits your needs
as dependency. RetroShare is then exposed as an Android Service as you can see
at https://gitlab.com/RetroShare/libretroshare/-/blob/master/src/rs_android/org/retroshare/service/RetroShareServiceAndroid.java?ref_type=heads[RetroShareServiceAndroid.java] start it and then interact with it
via RetroShare JSON API.
.Example of adding libretroshare as dependency in Gradle
--------------------------------------------------------------------------------
repositories {
maven {
url "https://gitlab.com/api/v4/projects/32730908/packages/maven"
}
}
dependencies {
// Look at https://gitlab.com/RetroShare/libretroshare/-/packages for
// available options.
// Minimum Android platform supported goes here ⬇
// Build variant goes here ⬇
// Version goes here ⬇
implementation "org.retroshare.service:libretroshare-MinApiLevel21-release:72f8b7e8"
}
--------------------------------------------------------------------------------
{empty} +
image:https://deepwiki.com/badge.svg[link="https://deepwiki.com/RetroShare/libretroshare",title="Ask DeepWiki"]