[CDRIVER-3234] ENABLE_SHM_COUNTERS, ENABLE_SRV, and ENABLE_ZSTD checks should be improved Created: 12/Jul/19  Updated: 03/Jun/21  Resolved: 03/Jun/21

Status: Closed
Project: C Driver
Component/s: libbson
Affects Version/s: 1.15.0
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Marek Floriańczyk Assignee: Unassigned
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Cross compile on Debian 64Bit with Android NDK r20, using clang from NDK clang version 8.0.7 and Qt version 5.12.3


Attachments: Text File android_compile.txt     Text File compile_output.txt    
Issue Links:
Related
related to CDRIVER-3429 Turn off libmongoc shared memory coun... Backlog
is related to CDRIVER-3447 Remove Android and iOS build from eve... Closed

 Description   

Hi

I'm cross compiling for Android and it ends up with errors, but at this time I'm interrested in libbson-static library which seems to compile fine.

I'm copying libbson-static-1.0.a to Qt project, and sources from

mongo-c-driver/src/libbson/src/bson to include in project.

It will compile until I use actual libbson code like this

b = bson_new_from_data (reinterpret_cast<uint8_t*>(data.data()), data.size())

Then it fails with errors below. It works fine on Linux

I have prepared small test application

[https://github.com/frankipl/libbson_test​|https://github.com/frankipl/libbson_test]

Best Regards

Marek

libbson-static-1.0.a compile Android project with Qt

// /home/franki/apps/qt/mongo-c-driver/src/libbson/src/bson/bson.c:0: error: undefined reference to 'stderr'  
/home/franki/apps/qt/mongo-c-driver/src/libbson/src/bson/bson.c:0: error: undefined reference to 'stderr'  
/home/franki/apps/qt/mongo-c-driver/src/libbson/src/bson/bson.c:0: error: undefined reference to 'stderr'  
/home/franki/apps/qt/mongo-c-driver/src/libbson/src/bson/bson.c:0: error: undefined reference to 'stderr'  
/home/franki/apps/qt/mongo-c-driver/src/libbson/src/bson/bson-context.c:235: error: undefined reference to 'rand_r'  
/home/franki/apps/qt/mongo-c-driver/src/libbson/src/bson/bson-context.c:235: error: undefined reference to 'rand_r'  
/home/franki/apps/qt/mongo-c-driver/src/libbson/src/bson/bson-context.c:235: error: undefined reference to 'rand_r'  
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
 
 

mongo-c-driver cmake compile

// franki@franki:~/apps/qt/mongo-c-driver$ cmake . -DCMAKE_SYSTEM_NAME=Android -DCMAKE_TOOLCHAIN_FILE=/opt/Android/Ndk/android-ndk-r20/build/cmake/android.toolchain.cmake -DANDROID_PLATFO
RM=android-28
 
-- Check for working C compiler: /opt/Android/Ndk/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/bin/clang
 
-- Check for working C compiler: /opt/Android/Ndk/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -- works
 
-- Detecting C compiler ABI info
 
-- Detecting C compiler ABI info - done
 
-- Detecting C compile features
 
-- Detecting C compile features - done
 
-- No CMAKE_BUILD_TYPE selected, defaulting to RelWithDebInfo
 
-- Found PythonInterp: /usr/bin/python (found version "2.7.13")  
calculated BUILD_VERSION 1.15.0-20190712+gitc88b84ff38
 
storing BUILD_VERSION 1.15.0-20190712+gitc88b84ff38 in file VERSION_CURRENT for later use                                                                                                
  -- Using bundled libbson                                                                                                                                                               
libbson version (from VERSION_CURRENT file): 1.15.0-pre                                                                                                                                  
-- Check if the system is big endian                                                                                                                                                     
-- Searching 16 bit integer                                                                                                                                                              
-- Looking for sys/types.h                                                                                                                                                               
-- Looking for sys/types.h - found                                                                                                                                                       
-- Looking for stdint.h                                                                                                                                                                  
-- Looking for stdint.h - found                                                                                                                                                          
-- Looking for stddef.h                                                                                                                                                                  
-- Looking for stddef.h - found
 
-- Check size of unsigned short
 
-- Check size of unsigned short - done
 
-- Using unsigned short
 
-- Check if the system is big endian - little endian
 
-- Looking for snprintf
 
-- Looking for snprintf - found
 
-- Looking for reallocf
 
-- Looking for reallocf - not found
 
-- Performing Test BSON_HAVE_TIMESPEC
 
-- Performing Test BSON_HAVE_TIMESPEC - Success
 
--     struct timespec found
 
-- Looking for gmtime_r
 
-- Looking for gmtime_r - found
 
-- Looking for rand_r
 
-- Looking for rand_r - found
 
-- Looking for strings.h                                                                                                                                                                 
-- Looking for strings.h - found                                                                                                                                                         
-- Looking for clock_gettime                                                                                                                                                             
-- Looking for clock_gettime - found                                                                                                                                                     
-- Looking for strnlen                                                                                                                                                                   
-- Looking for strnlen - found                                                                                                                                                           
-- Looking for stdbool.h                                                                                                                                                                 
-- Looking for stdbool.h - found                                                                                                                                                         
-- Looking for SYS_gettid                                                                                                                                                                
-- Looking for SYS_gettid - found                                                                                                                                                        
-- Looking for syscall
 
-- Looking for syscall - found
 
-- Performing Test HAVE_ATOMIC_32_ADD_AND_FETCH
 
-- Performing Test HAVE_ATOMIC_32_ADD_AND_FETCH - Success
 
-- Performing Test HAVE_ATOMIC_64_ADD_AND_FETCH
 
-- Performing Test HAVE_ATOMIC_64_ADD_AND_FETCH - Success
 
-- Looking for pthread.h
 
-- Looking for pthread.h - found
 
-- Looking for pthread_create
 
-- Looking for pthread_create - found
 
-- Found Threads: TRUE   
libmongoc version (from VERSION_CURRENT file): 1.15.0-pre
 
-- Searching for zlib CMake packages
 
-- Found ZLIB: /opt/Android/Ndk/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a (found version "1.2.7")  
--   zlib found version "1.2.7"
 
--   zlib include path "/opt/Android/Ndk/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include"
 
--   zlib libraries "/opt/Android/Ndk/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a"
 
-- Looking for include file unistd.h
 
-- Looking for include file unistd.h - found
 
-- Looking for include file stdarg.h
 
-- Looking for include file stdarg.h - found
 
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing:  OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR)  
-- Searching for sasl/sasl.h
 
--   Not found (specify -DCMAKE_INCLUDE_PATH=/path/to/sasl/include for SASL support)
 
-- Searching for libsasl2
 
--   Not found (specify -DCMAKE_LIBRARY_PATH=/path/to/sasl/lib for SASL support)
 
-- Check size of socklen_t
 
-- Check size of socklen_t - done
 
-- Looking for res_nsearch
 
-- Looking for res_nsearch - not found
 
-- Looking for res_search
 
-- Looking for res_search - found
 
-- Looking for sched_getcpu
 
-- Looking for sched_getcpu - not found
 
-- Detected parameters: accept (int, struct sockaddr *, socklen_t *)
 
-- Searching for compression library header snappy-c.h
 
--   Not found (specify -DCMAKE_INCLUDE_PATH=/path/to/snappy/include for Snappy compression)
 
-- No ICU library found, SASLPrep disabled for SCRAM-SHA-256 authentication.
 
-- If ICU is installed in a non-standard directory, define ICU_ROOT as the ICU installation path.
 
-- SSL disabled
 
-- SASL disabled
 
-- Configuring done
 
-- Generating done
 
-- Build files have been written to: /home/franki/apps/qt/mongo-c-driver
 
franki@franki:~/apps/qt/mongo-c-driver$ make
 
-- No CMAKE_BUILD_TYPE selected, defaulting to RelWithDebInfo
 
file VERSION_CURRENT contained BUILD_VERSION 1.15.0-20190712+gitc88b84ff38
 
  -- Using bundled libbson
 
libbson version (from VERSION_CURRENT file): 1.15.0-pre
 
--     struct timespec found
 
libmongoc version (from VERSION_CURRENT file): 1.15.0-pre
 
-- Searching for zlib CMake packages
 
--   zlib found version "1.2.7"
 
--   zlib include path "/opt/Android/Ndk/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include"
 
--   zlib libraries "/opt/Android/Ndk/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a"
 
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing:  OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR)  
-- Searching for sasl/sasl.h
 
--   Not found (specify -DCMAKE_INCLUDE_PATH=/path/to/sasl/include for SASL support)
 
-- Searching for libsasl2
 
--   Not found (specify -DCMAKE_LIBRARY_PATH=/path/to/sasl/lib for SASL support)
 
-- Detected parameters: accept (int, struct sockaddr *, socklen_t *)
 
-- Searching for compression library header snappy-c.h
 
--   Not found (specify -DCMAKE_INCLUDE_PATH=/path/to/snappy/include for Snappy compression)
 
-- No ICU library found, SASLPrep disabled for SCRAM-SHA-256 authentication.
 
-- If ICU is installed in a non-standard directory, define ICU_ROOT as the ICU installation path.
 
-- SSL disabled
 
-- SASL disabled
 
-- Configuring done
 
-- Generating done
 
-- Build files have been written to: /home/franki/apps/qt/mongo-c-driver
 
Scanning dependencies of target bson_shared
 
[  1%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bcon.c.o
 
[  1%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson.c.o
 
[  1%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-atomic.c.o
 
[  1%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-clock.c.o
 
[  2%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-context.c.o
 
[  2%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-decimal128.c.o
 
[  2%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-error.c.o
 
[  2%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-iso8601.c.o
 
[  3%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-iter.c.o
 
[  3%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-json.c.o
 
[  3%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-keys.c.o
 
[  3%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-md5.c.o
 
[  4%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-memory.c.o
 
[  4%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-oid.c.o
 
[  4%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-reader.c.o
 
[  4%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-string.c.o
 
[  5%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-timegm.c.o
 
/home/franki/apps/qt/mongo-c-driver/src/libbson/src/bson/bson-timegm.c:309:17: warning: assigning to 'char *' from 'const char *' discards qualifiers
 
      [-Wincompatible-pointer-types-discards-qualifiers]
 
   tmp->TM_ZONE = offset ? wildabbr : gmtptr ? gmtptr->chars : gmt;
 
                ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1 warning generated.
 
[  5%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-utf8.c.o
 
[  5%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-value.c.o
 
[  6%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-version-functions.c.o
 
[  6%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/bson/bson-writer.c.o
 
[  6%] Building C object src/libbson/CMakeFiles/bson_shared.dir/src/jsonsl/jsonsl.c.o
 
[  6%] Building C object src/libbson/CMakeFiles/bson_shared.dir/__/common/common-b64.c.o
 
[  7%] Building C object src/libbson/CMakeFiles/bson_shared.dir/__/common/common-md5.c.o
 
[  7%] Linking C shared library libbson-1.0.so
 
[  7%] Built target bson_shared
 
Scanning dependencies of target bcon-speed
 
[  7%] Building C object src/libbson/CMakeFiles/bcon-speed.dir/examples/bcon-speed.c.o
 
[  8%] Linking C executable bcon-speed
 
[  8%] Built target bcon-speed
 
Scanning dependencies of target bson_static
 
[  8%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bcon.c.o
 
[  8%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson.c.o
 
[  9%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-atomic.c.o
 
[  9%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-clock.c.o
 
[  9%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-context.c.o
 
[  9%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-decimal128.c.o
 
[ 10%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-error.c.o
 
[ 10%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-iso8601.c.o
 
[ 10%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-iter.c.o
 
[ 11%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-json.c.o
 
[ 11%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-keys.c.o
 
[ 11%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-md5.c.o
 
[ 11%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-memory.c.o
 
[ 12%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-oid.c.o
 
[ 12%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-reader.c.o
 
[ 12%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-string.c.o
 
[ 12%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-timegm.c.o
 
/home/franki/apps/qt/mongo-c-driver/src/libbson/src/bson/bson-timegm.c:309:17: warning: assigning to 'char *' from 'const char *' discards qualifiers
 
      [-Wincompatible-pointer-types-discards-qualifiers]
 
   tmp->TM_ZONE = offset ? wildabbr : gmtptr ? gmtptr->chars : gmt;
 
                ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1 warning generated.
 
[ 13%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-utf8.c.o
 
[ 13%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-value.c.o
 
[ 13%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-version-functions.c.o
 
[ 13%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/bson/bson-writer.c.o
 
[ 14%] Building C object src/libbson/CMakeFiles/bson_static.dir/src/jsonsl/jsonsl.c.o
 
[ 14%] Building C object src/libbson/CMakeFiles/bson_static.dir/__/common/common-b64.c.o
 
[ 14%] Building C object src/libbson/CMakeFiles/bson_static.dir/__/common/common-md5.c.o
 
[ 14%] Linking C static library libbson-static-1.0.a
 
[ 14%] Built target bson_static
 
Scanning dependencies of target json-to-bson
 
[ 15%] Building C object src/libbson/CMakeFiles/json-to-bson.dir/examples/json-to-bson.c.o
 
[ 15%] Linking C executable json-to-bson
 
[ 15%] Built target json-to-bson
 
Scanning dependencies of target bson-streaming-reader
 
[ 15%] Building C object src/libbson/CMakeFiles/bson-streaming-reader.dir/examples/bson-streaming-reader.c.o
 
[ 15%] Linking C executable bson-streaming-reader
 
[ 15%] Built target bson-streaming-reader
 
Scanning dependencies of target bson-to-json
 
[ 15%] Building C object src/libbson/CMakeFiles/bson-to-json.dir/examples/bson-to-json.c.o
 
[ 16%] Linking C executable bson-to-json
 
[ 16%] Built target bson-to-json
 
Scanning dependencies of target bson-metrics
 
[ 16%] Building C object src/libbson/CMakeFiles/bson-metrics.dir/examples/bson-metrics.c.o
 
[ 17%] Linking C executable bson-metrics
 
[ 17%] Built target bson-metrics
 
Scanning dependencies of target bson-validate
 
[ 17%] Building C object src/libbson/CMakeFiles/bson-validate.dir/examples/bson-validate.c.o
 
[ 17%] Linking C executable bson-validate
 
[ 17%] Built target bson-validate
 
Scanning dependencies of target bcon-col-view
 
[ 17%] Building C object src/libbson/CMakeFiles/bcon-col-view.dir/examples/bcon-col-view.c.o
 
[ 17%] Linking C executable bcon-col-view
 
[ 17%] Built target bcon-col-view
 
Scanning dependencies of target bson-check-depth
 
[ 17%] Building C object src/libbson/CMakeFiles/bson-check-depth.dir/examples/bson-check-depth.c.o
 
[ 17%] Linking C executable bson-check-depth
 
[ 17%] Built target bson-check-depth
 
Scanning dependencies of target mongoc_shared
 
[ 17%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-aggregate.c.o
 
[ 17%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-apm.c.o
 
[ 18%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-array.c.o
 
[ 18%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-async.c.o
 
[ 18%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-async-cmd.c.o
 
[ 18%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-buffer.c.o
 
[ 19%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-bulk-operation.c.o
 
[ 19%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-change-stream.c.o
 
[ 19%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-client.c.o
 
[ 20%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-client-pool.c.o
 
[ 20%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cluster.c.o
 
[ 20%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cluster-sasl.c.o
 
[ 20%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-collection.c.o
 
[ 21%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-compression.c.o
 
[ 21%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-counters.c.o
 
/home/franki/apps/qt/mongo-c-driver/src/libmongoc/src/mongoc/mongoc-counters.c:141:7: warning: implicit declaration of function 'shm_unlink' is invalid in C99
 
      [-Wimplicit-function-declaration]
 
      shm_unlink (name);
 
      ^
 
/home/franki/apps/qt/mongo-c-driver/src/libmongoc/src/mongoc/mongoc-counters.c:177:20: warning: implicit declaration of function 'shm_open' is invalid in C99
 
      [-Wimplicit-function-declaration]
 
   if (-1 == (fd = shm_open (name,
 
                   ^
 
/home/franki/apps/qt/mongo-c-driver/src/libmongoc/src/mongoc/mongoc-counters.c:204:4: warning: implicit declaration of function 'shm_unlink' is invalid in C99
 
      [-Wimplicit-function-declaration]
 
   shm_unlink (name);
 
   ^
 
3 warnings generated.
 
[ 21%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cursor-array.c.o
 
[ 21%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cursor.c.o
 
[ 22%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cursor-cmd.c.o
 
[ 22%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cursor-change-stream.c.o
 
[ 22%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cursor-cmd-deprecated.c.o
 
[ 22%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cursor-find.c.o
 
[ 23%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cursor-find-cmd.c.o
 
[ 23%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cursor-find-opquery.c.o
 
[ 23%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cursor-legacy.c.o
 
[ 24%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-database.c.o
 
[ 24%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-error.c.o
 
[ 24%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-find-and-modify.c.o
 
[ 24%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-init.c.o
 
/home/franki/apps/qt/mongo-c-driver/src/libmongoc/src/mongoc/mongoc-init.c:39:9: warning: Configure the driver with ENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF. Automatic cleanup is
 
      deprecated and will be removed in version 2.0. [-W#pragma-messages]
 
#pragma message( \
 
        ^
 
1 warning generated.
 
[ 25%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-gridfs.c.o
 
[ 25%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-gridfs-bucket.c.o
 
[ 25%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-gridfs-bucket-file.c.o
 
[ 25%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-gridfs-file.c.o
 
[ 26%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-gridfs-file-list.c.o
 
[ 26%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-gridfs-file-page.c.o
 
[ 26%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-handshake.c.o
 
[ 26%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-host-list.c.o
 
[ 27%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-index.c.o
 
[ 27%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-list.c.o
 
[ 27%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-linux-distro-scanner.c.o
 
[ 27%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-log.c.o
 
[ 28%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-matcher.c.o
 
[ 28%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-matcher-op.c.o
 
[ 28%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-memcmp.c.o
 
[ 29%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-cmd.c.o
 
[ 29%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-opts.c.o
 
[ 29%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-opts-helpers.c.o
 
[ 29%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-queue.c.o
 
[ 30%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-read-concern.c.o
 
[ 30%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-read-prefs.c.o
 
[ 30%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-rpc.c.o
 
[ 30%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-server-description.c.o
 
[ 31%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-server-stream.c.o
 
[ 31%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-client-session.c.o
 
[ 31%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-set.c.o
 
[ 31%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-socket.c.o
 
[ 32%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-stream-buffered.c.o
 
[ 32%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-stream.c.o
 
[ 32%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-stream-file.c.o
 
[ 33%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-stream-gridfs.c.o
 
[ 33%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-stream-gridfs-download.c.o
 
[ 33%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-stream-gridfs-upload.c.o
 
[ 33%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-stream-socket.c.o
 
[ 34%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-topology.c.o
 
[ 34%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-topology-description.c.o
 
[ 34%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-topology-description-apm.c.o
 
[ 34%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-topology-scanner.c.o
 
[ 35%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-uri.c.o
 
[ 35%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-util.c.o
 
[ 35%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-version-functions.c.o
 
[ 35%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-write-command.c.o
 
[ 36%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-write-command-legacy.c.o
 
[ 36%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/src/mongoc/mongoc-write-concern.c.o
 
[ 36%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/__/common/common-b64.c.o
 
[ 36%] Building C object src/libmongoc/CMakeFiles/mongoc_shared.dir/__/common/common-md5.c.o
 
[ 37%] Linking C shared library libmongoc-1.0.so
 
/opt/Android/Ndk/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lresolv
 
/home/franki/apps/qt/mongo-c-driver/src/libmongoc/src/mongoc/mongoc-counters.c:141: error: undefined reference to 'shm_unlink'
 
/home/franki/apps/qt/mongo-c-driver/src/libmongoc/src/mongoc/mongoc-counters.c:177: error: undefined reference to 'shm_open'
 
/home/franki/apps/qt/mongo-c-driver/src/libmongoc/src/mongoc/mongoc-counters.c:204: error: undefined reference to 'shm_unlink'
 
clang: error: linker command failed with exit code 1 (use -v to see invocation)
 
src/libmongoc/CMakeFiles/mongoc_shared.dir/build.make:1995: polecenia dla obiektu 'src/libmongoc/libmongoc-1.0.so' nie powiodły się
 
make[2]: *** [src/libmongoc/libmongoc-1.0.so] Błąd 1
 
CMakeFiles/Makefile2:1417: polecenia dla obiektu 'src/libmongoc/CMakeFiles/mongoc_shared.dir/all' nie powiodły się
 
make[1]: *** [src/libmongoc/CMakeFiles/mongoc_shared.dir/all] Błąd 2
 
Makefile:149: polecenia dla obiektu 'all' nie powiodły się
 
make: *** [all] Błąd 2
 
franki@franki:~/apps/qt/mongo-c-driver$



 Comments   
Comment by Rachelle Palmer [ 03/Jun/21 ]

As there is a viable workaround for this issue, we have opted not to fix this issue.

Comment by Kevin Albertson [ 01/Apr/20 ]

Repurposing this ticket to improve checks for cmake features, that were problematic for compile on Android.

Comment by Kevin Albertson [ 27/Jan/20 ]

Prior to CDRIVER-3447, we were building libmongoc for iOS in our continuous integration tests, so I believe it should be possible. It may be helpful to refer to those changes, which were originally added in CDRIVER-2459.

Note, per CDRIVER-2850 native SSL on iOS may not work. Since iOS is currently not a supported platform, there aren't plans to schedule that work.

Comment by Marek Floriańczyk [ 27/Jan/20 ]

Hi Kevin

Yes, I can wait with Android, my application is actually working. More pressing issue for me is now using libbson for iOS application can you recommend some sollution ? preferably to compile a static library on Mac for iOS ?

Best,

Marek

Comment by Kevin Albertson [ 27/Jan/20 ]

Hi Marek, Thank you for including the compiler output. To confirm, does your workaround suffice for the time being? I would like to improve the cmake options checks (i.e. it should not be necessary to explicitly set ENABLE_SHM_COUNTERS=OFF and ENABLE_ZSTD=OFF, since with those options omitted the cmake scripts should correctly determine whether those features can be enabled). I have yet to reproduce the undefined reference to 'stderr', but that requires more investigation. Addressing these issues may need to wait until after our 1.17.0 release.

Comment by Marek Floriańczyk [ 03/Jan/20 ]

Hi

Compile output attached android_compile.txt

Maybe problem is that my framework adds -nostdlib to compilation commands. I remember some time ago there was some problem with compilation for Android and solution was to add this flag. Now it seems framework is adding this flag by default, during linking.

Best,

Marek

Comment by Kevin Albertson [ 03/Jan/20 ]

Can you include the compilation command and output of the Qt application that is linking to libbson.a. (Or, perhaps that is not possible if you're compiling with an IDE). If I am able to reproduce that error locally it may help me determine if this is a bug in libbson. stderr should be defined in stdio.h, so the source of this error and whether your workaround is correct is not clear to me. FWIW https://github.com/android/ndk/issues/272 may be related.

Note, we do not officially support or test building the C driver for Android or iOS (and have stopped testing per CDRIVER-3447). So I cannot be certain it will libmongoc/libbson will compile on iOS.

Comment by Marek Floriańczyk [ 03/Jan/20 ]

Hi

I'm not sure which compilation output you would like to see, so I did this:

I Downloaded 1.15.3 from website and cross compiled for Android with your options - this work. 

Then I want to include libbson-static-1.0.a with my project and then there is problem:

// /home/franki/apps/qt/myapp/mongodb_2020.01.03/mongo-c-driver-1.15.3/src/libbson/src/bson/bson.c:0: error: undefined reference to 'stderr'

This problem I also had earlier when reporting this error. I added to src/libbson/src/bson/bson.c file

// 
#undef stderr
 
FILE *stderr = NULL;

So with that change it works, full output from compile below.

Additional question: Can I compile for iOS libbson-static in the same way as for Android ? OR similar just using mongodb code and clang on OSX ?

Best,

Marek

Compile output as attachmentcompile_output.txt

 

Comment by Kevin Albertson [ 31/Dec/19 ]

Hi marek.florianczyk@gmail.com, apologies for the delay. I was able to reproduce the error you got when compiling libmongoc regarding undefined shm functions. I believe that is due to a too loose check of whether shared memory functions are available (we assume Unix platforms have them). I was able to compile libmongoc by disabling the optional performance counters which removes the code requiring the shm functions:

cmake -DCMAKE_SYSTEM_NAME=Android \
  -DCMAKE_TOOLCHAIN_FILE=~/bin/android-ndk-r20b/build/cmake/android.toolchain.cmake \
  -DANDROID_PLATFORM=android-28 \
  -DENABLE_SHM_COUNTERS=OFF \
  -DENABLE_SRV=OFF \
  -DENABLE_ZSTD=OFF \
  ..

I additionally needed to disable SRV and ZSTD support. Those automated checks, like the shared memory support, may require some tweaking in our cmake scripts to be completely accurate.

Regardless, after building/installing libmongoc and libbson, I attempted to link against the built libbson-static, and it seemed to work. I was not able to reproduce the error you received compiling against libbson-static. Here is the example project: https://github.com/kevinAlbs/ExampleAndroidBuild

Would you be able to include the compilation commands and output you used for your example application?

Thanks,
Kevin

Comment by Kevin Albertson [ 23/Jul/19 ]

Hi marek.florianczyk@gmail.com, thank you for the detailed report! We'll investigate this after our 1.15.0 release.

If you need answers sooner, the best place for questions regarding MongoDB usage or C driver specifics is the mongodb-user mailing list or stackoverflow as you will reach a broader audience there.

If your business requires an answer from MongoDB within a time frame then we do offer production support.

Generated at Wed Feb 07 21:17:28 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.