While building in Android Studio 4.0.1 I am getting error: cannot find -lpaho-mqttpp3, cannot find -lpaho-mqtt3as-static, cannot find -lssl, cannot find -lcrypto
cmake_minimum_required(VERSION 3.10.2)
include(${CMAKE_CURRENT_SOURCE_DIR}/conan_build/conanbuildinfo.cmake)
set(CMAKE_CXX_COMPILER_VERSION "9.0.8") # Unknown miss-detection of the compiler by CMake
conan_basic_setup(TARGETS)
add_library( # Sets the name of the library.
native-lib
SHARED
native-lib.cpp)
find_library( # Sets the name of the path variable.
log-lib
log)
target_link_libraries( # Specifies the target library.
native-lib
${log-lib}
${CONAN_LIBS}
)
build.gradle::conanInstall
task conanInstall {
def buildDir = new File("app/src/main/cpp/conan_build")
buildDir.mkdirs()
// if you have problems running the command try to specify the absolute
// path to conan (Known problem in MacOSX) /usr/local/bin/conan
def cmmd = "conan install ../conanfile.txt --profile ../profiles/android_29_x86_clang --build missing "
print(">> ${cmmd} \n")
def sout = new StringBuilder(), serr = new StringBuilder()
def proc = cmmd.execute(null, buildDir)
proc.consumeProcessOutput(sout, serr)
proc.waitFor()
println "$sout $serr"
if (proc.exitValue() != 0) {
throw new Exception("out> $sout err> $serr" + "\nCommand: ${cmmd}")
}
}
in externalNativeBuild for CMake I am setting cppFlags "-std=c++14 -frtti -fexceptions -stdlib=libc++"
I can see that Conan is able to build the libraries without any problems but as the Conan built libraries are attempted to be linked, the build breaks.
Here's an excerpt of output:
[0/1] Re-running CMake...
-- Conan: Adjusting output directories
-- Conan: Using cmake targets configuration
-- Library paho-mqttpp3 found /Users/in-abhijit.b/.conan/data/paho-mqtt-cpp/1.1/_/_/package/9f96d6658ee788676fb7f928ba4a36f123ade05b/lib/libpaho-mqttpp3.a
-- Library paho-mqtt3as-static found /Users/in-abhijit.b/.conan/data/paho-mqtt-c/1.3.1/_/_/package/d6dff33203c1fd032290c722770b1d08abf1de17/lib/libpaho-mqtt3as-static.a
-- Library ssl found /Users/in-abhijit.b/.conan/data/openssl/1.1.1g/_/_/package/a07e5697dec8334df38a8d6412eb8a4deab5fdfe/lib/libssl.a
-- Library crypto found /Users/in-abhijit.b/.conan/data/openssl/1.1.1g/_/_/package/a07e5697dec8334df38a8d6412eb8a4deab5fdfe/lib/libcrypto.a
-- Conan: Adjusting default RPATHs Conan policies
-- Conan: Adjusting language standard
-- Current conanbuildinfo.cmake directory: /Users/in-abhijit.b/PlayGround/Android/Conan/MqttClientPoc/app/src/main/cpp/conan_build
-- Conan: Compiler Clang>=8, checking major version 9
-- Conan: Checking correct version: 9
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/in-abhijit.b/PlayGround/Android/Conan/MqttClientPoc/app/.cxx/cmake/debug/x86
[1/2] Building CXX object CMakeFiles/native-lib.dir/native-lib.cpp.o
[2/2] Linking CXX shared library lib/libnative-lib.so
FAILED: lib/libnative-lib.so
: && /Users/in-abhijit.b/Library/Android/sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android28 --gcc-toolchain=/Users/in-abhijit.b/Library/Android/sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Users/in-abhijit.b/Library/Android/sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -std=c++14 -frtti -fexceptions -O0 -fno-limit-debug-info -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libnative-lib.so -o lib/libnative-lib.so CMakeFiles/native-lib.dir/native-lib.cpp.o -llog -lpaho-mqttpp3 -lpaho-mqtt3as-static -lssl -lcrypto -lc -latomic -lm && :
/Users/in-abhijit.b/Library/Android/sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld: error: cannot find -lpaho-mqttpp3
/Users/in-abhijit.b/Library/Android/sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld: error: cannot find -lpaho-mqtt3as-static
/Users/in-abhijit.b/Library/Android/sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld: error: cannot find -lssl
/Users/in-abhijit.b/Library/Android/sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld: error: cannot find -lcrypto
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
FAILURE: Build failed with an exception.
Trying to use paho with ssl using Conan.
While building in Android Studio 4.0.1 I am getting error: cannot find -lpaho-mqttpp3, cannot find -lpaho-mqtt3as-static, cannot find -lssl, cannot find -lcrypto
conanfile.txt
android_29_x86_clang
CMakeLists.txt
build.gradle::conanInstall
in externalNativeBuild for CMake I am setting cppFlags "-std=c++14 -frtti -fexceptions -stdlib=libc++"
I can see that Conan is able to build the libraries without any problems but as the Conan built libraries are attempted to be linked, the build breaks.
Here's an excerpt of output:
What changes are required to make it work?