Azure / azure-storage-cpp

Microsoft Azure Storage Client Library for C++
http://azure.github.io/azure-storage-cpp
Apache License 2.0
131 stars 147 forks source link

Building shared lib fails when trying to use static casablanca #389

Closed trevorwhitaker closed 3 years ago

trevorwhitaker commented 3 years ago

I'm trying to build the dynamic libs using a static lib of casablanca but keep failing during linking with the following errors:

[100%] Linking CXX shared library ../Binaries/libazurestorage.so
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(http_client.cpp.o): relocation R_X86_64_32S against symbol `_ZZNSt19_Sp_make_shared_tag5_S_tiEvE5__tag' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(http_client_msg.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(http_compression.cpp.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(http_helpers.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(http_msg.cpp.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(oauth1.cpp.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(json.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(json_parsing.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(json_serialization.cpp.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(uri.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(uri_builder.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(asyncrt_utils.cpp.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(base64.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(pplxlinux.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(pplx.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(threadpool.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(http_client_asio.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(fileio_posix.cpp.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: /usr/local/lib64/libcpprest.a(web_utilities.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/azurestorage.dir/build.make:1019: Binaries/libazurestorage.so.7.5] Error 1
make[1]: *** [CMakeFiles/Makefile2:98: src/CMakeFiles/azurestorage.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

I'm not sure how to go about solving these if there is some option I need to specify with the cmake command to allow this. I'm not familiar enough with the fPIC option to know whether I should be using that to build. Any help would be greatly appreciated!

Also I tried building static azure-storage-cpp and that worked fine so I assume the problem stems from using the static casablanca lib for dynamic azure-storage-cpp.

trevorwhitaker commented 3 years ago

Also just for clarity I am building on RHEL 7.6 but following the CentOS instructions in the README

Jinming-Hu commented 3 years ago

The error message suggests that if you want to link a dynamic library against a static library, you'll need to build the static library with -fPIC option.

trevorwhitaker commented 3 years ago

Thanks @Jinming-Hu. I rebuilt cpprestsdk with -fPIC and now I'm failing to compile with the follwoing:

Scanning dependencies of target azurestorage
[  1%] Building CXX object src/CMakeFiles/azurestorage.dir/timer_handler.cpp.o
[  3%] Building CXX object src/CMakeFiles/azurestorage.dir/executor.cpp.o
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h: In member function ‘const std::vector<unsigned char>& azure::storage::storage_credentials::account_key() const’:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:405:114: error: no matching function for call to ‘atomic_load_explicit(const std::shared_ptr<azure::storage::storage_credentials::account_key_credential>*, std::memory_order)’
             auto account_key_ptr = std::atomic_load_explicit(&m_account_key_credential, std::memory_order_acquire);
                                                                                                                  ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:405:114: note: candidates are:
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:834:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept
     ^
/usr/include/c++/4.8.2/atomic:834:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:405:114: note:   ‘const std::shared_ptr<azure::storage::storage_credentials::account_key_credential>’ is not derived from ‘const std::atomic<_ITp>’
             auto account_key_ptr = std::atomic_load_explicit(&m_account_key_credential, std::memory_order_acquire);
                                                                                                                  ^
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:839:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const volatile std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^
/usr/include/c++/4.8.2/atomic:839:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:405:114: note:   ‘const std::shared_ptr<azure::storage::storage_credentials::account_key_credential>’ is not derived from ‘const volatile std::atomic<_ITp>’
             auto account_key_ptr = std::atomic_load_explicit(&m_account_key_credential, std::memory_order_acquire);
                                                                                                                  ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h: In member function ‘void azure::storage::storage_credentials::set_account_key(std::vector<unsigned char>)’:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:425:114: error: no matching function for call to ‘atomic_load_explicit(std::shared_ptr<azure::storage::storage_credentials::account_key_credential>*, std::memory_order)’
             auto account_key_ptr = std::atomic_load_explicit(&m_account_key_credential, std::memory_order_acquire);
                                                                                                                  ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:425:114: note: candidates are:
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:834:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept
     ^
/usr/include/c++/4.8.2/atomic:834:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:425:114: note:   ‘std::shared_ptr<azure::storage::storage_credentials::account_key_credential>’ is not derived from ‘const std::atomic<_ITp>’
             auto account_key_ptr = std::atomic_load_explicit(&m_account_key_credential, std::memory_order_acquire);
                                                                                                                  ^
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:839:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const volatile std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^
/usr/include/c++/4.8.2/atomic:839:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:425:114: note:   ‘std::shared_ptr<azure::storage::storage_credentials::account_key_credential>’ is not derived from ‘const volatile std::atomic<_ITp>’
             auto account_key_ptr = std::atomic_load_explicit(&m_account_key_credential, std::memory_order_acquire);
                                                                                                                  ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h: In member function ‘utility::string_t azure::storage::storage_credentials::bearer_token() const’:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:450:109: error: no matching function for call to ‘atomic_load_explicit(const std::shared_ptr<azure::storage::storage_credentials::bearer_token_credential>*, std::memory_order)’
             auto token_ptr = std::atomic_load_explicit(&m_bearer_token_credential, std::memory_order_acquire);
                                                                                                             ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:450:109: note: candidates are:
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:834:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept
     ^
/usr/include/c++/4.8.2/atomic:834:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:450:109: note:   ‘const std::shared_ptr<azure::storage::storage_credentials::bearer_token_credential>’ is not derived from ‘const std::atomic<_ITp>’
             auto token_ptr = std::atomic_load_explicit(&m_bearer_token_credential, std::memory_order_acquire);
                                                                                                             ^
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:839:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const volatile std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^
/usr/include/c++/4.8.2/atomic:839:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:450:109: note:   ‘const std::shared_ptr<azure::storage::storage_credentials::bearer_token_credential>’ is not derived from ‘const volatile std::atomic<_ITp>’
             auto token_ptr = std::atomic_load_explicit(&m_bearer_token_credential, std::memory_order_acquire);
                                                                                                             ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h: In member function ‘void azure::storage::storage_credentials::set_bearer_token(utility::string_t)’:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:461:109: error: no matching function for call to ‘atomic_load_explicit(std::shared_ptr<azure::storage::storage_credentials::bearer_token_credential>*, std::memory_order)’
             auto token_ptr = std::atomic_load_explicit(&m_bearer_token_credential, std::memory_order_acquire);
                                                                                                             ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:461:109: note: candidates are:
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:834:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept
     ^
/usr/include/c++/4.8.2/atomic:834:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:461:109: note:   ‘std::shared_ptr<azure::storage::storage_credentials::bearer_token_credential>’ is not derived from ‘const std::atomic<_ITp>’
             auto token_ptr = std::atomic_load_explicit(&m_bearer_token_credential, std::memory_order_acquire);
                                                                                                             ^
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:839:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const volatile std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^
/usr/include/c++/4.8.2/atomic:839:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:461:109: note:   ‘std::shared_ptr<azure::storage::storage_credentials::bearer_token_credential>’ is not derived from ‘const volatile std::atomic<_ITp>’
             auto token_ptr = std::atomic_load_explicit(&m_bearer_token_credential, std::memory_order_acquire);
                                                                                                             ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h: In member function ‘bool azure::storage::storage_credentials::is_bearer_token() const’:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:512:109: error: no matching function for call to ‘atomic_load_explicit(const std::shared_ptr<azure::storage::storage_credentials::bearer_token_credential>*, std::memory_order)’
             auto token_ptr = std::atomic_load_explicit(&m_bearer_token_credential, std::memory_order_acquire);
                                                                                                             ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:512:109: note: candidates are:
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:834:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept
     ^
/usr/include/c++/4.8.2/atomic:834:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:512:109: note:   ‘const std::shared_ptr<azure::storage::storage_credentials::bearer_token_credential>’ is not derived from ‘const std::atomic<_ITp>’
             auto token_ptr = std::atomic_load_explicit(&m_bearer_token_credential, std::memory_order_acquire);
                                                                                                             ^
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:839:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const volatile std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^
/usr/include/c++/4.8.2/atomic:839:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:512:109: note:   ‘const std::shared_ptr<azure::storage::storage_credentials::bearer_token_credential>’ is not derived from ‘const volatile std::atomic<_ITp>’
             auto token_ptr = std::atomic_load_explicit(&m_bearer_token_credential, std::memory_order_acquire);
                                                                                                             ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h: In member function ‘bool azure::storage::storage_credentials::is_account_key() const’:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:526:114: error: no matching function for call to ‘atomic_load_explicit(const std::shared_ptr<azure::storage::storage_credentials::account_key_credential>*, std::memory_order)’
             auto account_key_ptr = std::atomic_load_explicit(&m_account_key_credential, std::memory_order_acquire);
                                                                                                                  ^
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:526:114: note: candidates are:
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:834:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept
     ^
/usr/include/c++/4.8.2/atomic:834:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:526:114: note:   ‘const std::shared_ptr<azure::storage::storage_credentials::account_key_credential>’ is not derived from ‘const std::atomic<_ITp>’
             auto account_key_ptr = std::atomic_load_explicit(&m_account_key_credential, std::memory_order_acquire);
                                                                                                                  ^
In file included from /usr/local/include/pplx/pplxlinux.h:26:0,
                 from /usr/local/include/pplx/pplx.h:49,
                 from /usr/local/include/pplx/pplxtasks.h:61,
                 from /usr/local/include/cpprest/asyncrt_utils.h:17,
                 from /usr/local/include/cpprest/http_client.h:47,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:18:
/usr/include/c++/4.8.2/atomic:839:5: note: template<class _ITp> _ITp std::atomic_load_explicit(const volatile std::atomic<_ITp>*, std::memory_order)
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^
/usr/include/c++/4.8.2/atomic:839:5: note:   template argument deduction/substitution failed:
In file included from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/common.h:23:0,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/logging.h:21,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h:23,
                 from /home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/executor.cpp:20:
/home/twhitake/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/was/core.h:526:114: note:   ‘const std::shared_ptr<azure::storage::storage_credentials::account_key_credential>’ is not derived from ‘const volatile std::atomic<_ITp>’
             auto account_key_ptr = std::atomic_load_explicit(&m_account_key_credential, std::memory_order_acquire);
                                                                                                                  ^
make[2]: *** [src/CMakeFiles/azurestorage.dir/executor.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/azurestorage.dir/all] Error 2
make: *** [all] Error 2

Any ideas what is going on?

Thanks!

Jinming-Hu commented 3 years ago
/usr/include/c++/4.8.2/atomic

You need at lease GCC 5.1

/opt/rh/devtoolset-8/

You were using GCC 8 (or 9), right? Why did you switch back to GCC 4?

trevorwhitaker commented 3 years ago

Ya, I was using it but my env switched back to using gcc4. For some reason scl enable devtoolset-8 bash isn't working either. I'll need to investigate this. Thanks for the help!

trevorwhitaker commented 3 years ago

@Jinming-Hu Thanks! Once I got my environment fixed and using gcc8 the lib compiled fine.

I am now trying to build the tests but it looks like there is an issue with static boost library I built, I'm using the following command:

$ cmake3 .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON
-- Found UUID : /usr/lib64/libuuid.so
-- Found CASABLANCA  : /usr/local/lib64/libcpprest.a
-- Found LibXML2  : /usr/lib64/libxml2.so
CMake Warning (dev) at /opt/cmake-3.18.6-Linux-x86_64/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (PkgConfig)
  does not match the name of the calling package (UnitTest++).  This can lead
  to problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  /opt/cmake-3.18.6-Linux-x86_64/share/cmake-3.18/Modules/FindPkgConfig.cmake:59 (find_package_handle_standard_args)
  cmake/Modules/FindUnitTest++.cmake:10 (include)
  CMakeLists.txt:54 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found UnitTest++  : /usr/local/lib/libUnitTest++.a
-- Setting gcc options
-- Configuring done
-- Generating done
-- Build files have been written to: /home/trevor/azure-storage-cpp/Microsoft.WindowsAzure.Storage/build.release

and then

$ make

The build finishes fine but during linking I get the following errors:

[100%] Linking CXX executable ../Binaries/azurestoragetest
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::attributes::counter<unsigned int>::impl::get_value()':
main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes7counterIjE4impl9get_valueEv[_ZN5boost3log11v2_mt_posix10attributes7counterIjE4impl9get_valueEv]+0x17): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator new(unsigned long)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::attributes::basic_clock<boost::log::v2_mt_posix::attributes::local_time_traits>::impl::~impl()':
main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes11basic_clockINS2_17local_time_traitsEE4implD0Ev[_ZN5boost3log11v2_mt_posix10attributes11basic_clockINS2_17local_time_traitsEE4implD5Ev]+0x6): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator delete(void*, unsigned long)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::attributes::counter<unsigned int>::impl::~impl()':
main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes7counterIjE4implD0Ev[_ZN5boost3log11v2_mt_posix10attributes7counterIjE4implD5Ev]+0x6): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator delete(void*, unsigned long)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::attributes::attribute_value_impl<unsigned int>::~attribute_value_impl()':
main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes20attribute_value_implIjED0Ev[_ZN5boost3log11v2_mt_posix10attributes20attribute_value_implIjED5Ev]+0x6): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator delete(void*, unsigned long)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::attributes::attribute_value_impl<boost::posix_time::ptime>::~attribute_value_impl()':
main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes20attribute_value_implINS_10posix_time5ptimeEED0Ev[_ZN5boost3log11v2_mt_posix10attributes20attribute_value_implINS_10posix_time5ptimeEED5Ev]+0x6): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator delete(void*, unsigned long)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::attributes::current_thread_id::impl::~impl()':
main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes17current_thread_id4implD0Ev[_ZN5boost3log11v2_mt_posix10attributes17current_thread_id4implD5Ev]+0x6): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator delete(void*, unsigned long)'
CMakeFiles/azurestoragetest.dir/main.cpp.o:main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes20attribute_value_implINS1_3aux2idINS4_6threadEEEED0Ev[_ZN5boost3log11v2_mt_posix10attributes20attribute_value_implINS1_3aux2idINS4_6threadEEEED5Ev]+0x6): more undefined references to `boost::log::v2_mt_posix::attribute::impl::operator delete(void*, unsigned long)' follow
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::attributes::current_thread_id::impl::detach_from_thread()':
main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes17current_thread_id4impl18detach_from_threadEv[_ZN5boost3log11v2_mt_posix10attributes17current_thread_id4impl18detach_from_threadEv]+0xa): undefined reference to `boost::log::v2_mt_posix::aux::this_thread::get_id()'
main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes17current_thread_id4impl18detach_from_threadEv[_ZN5boost3log11v2_mt_posix10attributes17current_thread_id4impl18detach_from_threadEv]+0x17): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator new(unsigned long)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::attributes::current_thread_id::impl::dispatch(boost::log::v2_mt_posix::type_dispatcher&)':
main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes17current_thread_id4impl8dispatchERNS1_15type_dispatcherE[_ZN5boost3log11v2_mt_posix10attributes17current_thread_id4impl8dispatchERNS1_15type_dispatcherE]+0x21): undefined reference to `boost::log::v2_mt_posix::aux::this_thread::get_id()'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::detail::sp_counted_impl_pd<boost::log::v2_mt_posix::sinks::text_file_backend*, boost::detail::sp_ms_deleter<boost::log::v2_mt_posix::sinks::text_file_backend> >::~sp_counted_impl_pd()':
main.cpp:(.text._ZN5boost6detail18sp_counted_impl_pdIPNS_3log11v2_mt_posix5sinks17text_file_backendENS0_13sp_ms_deleterIS5_EEED2Ev[_ZN5boost6detail18sp_counted_impl_pdIPNS_3log11v2_mt_posix5sinks17text_file_backendENS0_13sp_ms_deleterIS5_EEED5Ev]+0x15): undefined reference to `boost::log::v2_mt_posix::sinks::text_file_backend::~text_file_backend()'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::detail::sp_counted_impl_pd<boost::log::v2_mt_posix::sinks::text_file_backend*, boost::detail::sp_ms_deleter<boost::log::v2_mt_posix::sinks::text_file_backend> >::~sp_counted_impl_pd()':
main.cpp:(.text._ZN5boost6detail18sp_counted_impl_pdIPNS_3log11v2_mt_posix5sinks17text_file_backendENS0_13sp_ms_deleterIS5_EEED0Ev[_ZN5boost6detail18sp_counted_impl_pdIPNS_3log11v2_mt_posix5sinks17text_file_backendENS0_13sp_ms_deleterIS5_EEED5Ev]+0x25): undefined reference to `boost::log::v2_mt_posix::sinks::text_file_backend::~text_file_backend()'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::detail::sp_counted_impl_pd<boost::log::v2_mt_posix::sinks::text_file_backend*, boost::detail::sp_ms_deleter<boost::log::v2_mt_posix::sinks::text_file_backend> >::dispose()':
main.cpp:(.text._ZN5boost6detail18sp_counted_impl_pdIPNS_3log11v2_mt_posix5sinks17text_file_backendENS0_13sp_ms_deleterIS5_EEE7disposeEv[_ZN5boost6detail18sp_counted_impl_pdIPNS_3log11v2_mt_posix5sinks17text_file_backendENS0_13sp_ms_deleterIS5_EEE7disposeEv]+0x19): undefined reference to `boost::log::v2_mt_posix::sinks::text_file_backend::~text_file_backend()'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::sinks::synchronous_sink<boost::log::v2_mt_posix::sinks::text_file_backend>::flush()':
main.cpp:(.text._ZN5boost3log11v2_mt_posix5sinks16synchronous_sinkINS2_17text_file_backendEE5flushEv[_ZN5boost3log11v2_mt_posix5sinks16synchronous_sinkINS2_17text_file_backendEE5flushEv]+0x27): undefined reference to `boost::log::v2_mt_posix::sinks::text_file_backend::flush()'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::add_common_attributes()':
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0xa): undefined reference to `boost::log::v2_mt_posix::core::get()'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0x18): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator new(unsigned long)'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0x43): undefined reference to `boost::log::v2_mt_posix::aux::default_attribute_names::line_id()'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0x5e): undefined reference to `boost::log::v2_mt_posix::core::add_global_attribute(boost::log::v2_mt_posix::attribute_name const&, boost::log::v2_mt_posix::attribute const&)'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0x7f): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator new(unsigned long)'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0x9c): undefined reference to `boost::log::v2_mt_posix::aux::default_attribute_names::timestamp()'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0xb7): undefined reference to `boost::log::v2_mt_posix::core::add_global_attribute(boost::log::v2_mt_posix::attribute_name const&, boost::log::v2_mt_posix::attribute const&)'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0xd3): undefined reference to `boost::log::v2_mt_posix::aux::this_process::get_id()'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0xe0): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator new(unsigned long)'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0x101): undefined reference to `boost::log::v2_mt_posix::aux::default_attribute_names::process_id()'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0x11c): undefined reference to `boost::log::v2_mt_posix::core::add_global_attribute(boost::log::v2_mt_posix::attribute_name const&, boost::log::v2_mt_posix::attribute const&)'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0x13d): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator new(unsigned long)'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0x15a): undefined reference to `boost::log::v2_mt_posix::aux::default_attribute_names::thread_id()'
main.cpp:(.text._ZN5boost3log11v2_mt_posix21add_common_attributesEv[_ZN5boost3log11v2_mt_posix21add_common_attributesEv]+0x175): undefined reference to `boost::log::v2_mt_posix::core::add_global_attribute(boost::log::v2_mt_posix::attribute_name const&, boost::log::v2_mt_posix::attribute const&)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::detail::sp_if_not_array<boost::log::v2_mt_posix::sinks::text_file_backend>::type boost::make_shared<boost::log::v2_mt_posix::sinks::text_file_backend, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2_mt_posix::keywords::tag::file_name, char const [13]>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [7]>, 0l> > >, 2l> >, boost::log::v2_mt_posix::expressions::attribute_actor<boost::log::v2_mt_posix::trivial::severity_level, boost::log::v2_mt_posix::fallback_to_none, boost::log::v2_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2_mt_posix::expressions::attribute_actor<std::string, boost::log::v2_mt_posix::fallback_to_none, boost::log::v2_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const>, boost::parameter::aux::empty_arg_list> > const&>(boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2_mt_posix::keywords::tag::file_name, char const [13]>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [7]>, 0l> > >, 2l> >, boost::log::v2_mt_posix::expressions::attribute_actor<boost::log::v2_mt_posix::trivial::severity_level, boost::log::v2_mt_posix::fallback_to_none, boost::log::v2_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2_mt_posix::expressions::attribute_actor<std::string, boost::log::v2_mt_posix::fallback_to_none, boost::log::v2_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const>, boost::parameter::aux::empty_arg_list> > const&)':
main.cpp:(.text._ZN5boost11make_sharedINS_3log11v2_mt_posix5sinks17text_file_backendEJRKNS_9parameter3aux8arg_listINS6_15tagged_argumentINS2_8keywords3tag9file_nameEA13_KcEENS7_INS8_INSA_6formatEKNS_7phoenix5actorINS_5proto7exprns_10basic_exprINSI_6tagns_3tag10shift_leftENSI_7argsns_5list2INSH_INSK_ISN_NSP_INSH_INSK_ISN_NSP_INSH_INSK_ISN_NSP_INSH_INSK_INSM_8terminalENSO_4termINSG_8argumentILi2EEEEELl0EEEEENSH_INSK_ISQ_NSR_IA7_cEELl0EEEEEEELl2EEEEENS2_11expressions15attribute_actorINS2_7trivial14severity_levelENS2_16fallback_to_noneENS16_3tag8severityESH_EEEELl2EEEEENSH_INSK_ISQ_NSR_IA3_cEELl0EEEEEEELl2EEEEENS15_ISsS18_NS14_3tag8smessageESH_EEEELl2EEEEEEENS6_14empty_arg_listEEEEEEEENS_6detail15sp_if_not_arrayIT_E4typeEDpOT0_[_ZN5boost11make_sharedINS_3log11v2_mt_posix5sinks17text_file_backendEJRKNS_9parameter3aux8arg_listINS6_15tagged_argumentINS2_8keywords3tag9file_nameEA13_KcEENS7_INS8_INSA_6formatEKNS_7phoenix5actorINS_5proto7exprns_10basic_exprINSI_6tagns_3tag10shift_leftENSI_7argsns_5list2INSH_INSK_ISN_NSP_INSH_INSK_ISN_NSP_INSH_INSK_ISN_NSP_INSH_INSK_INSM_8terminalENSO_4termINSG_8argumentILi2EEEEELl0EEEEENSH_INSK_ISQ_NSR_IA7_cEELl0EEEEEEELl2EEEEENS2_11expressions15attribute_actorINS2_7trivial14severity_levelENS2_16fallback_to_noneENS16_3tag8severityESH_EEEELl2EEEEENSH_INSK_ISQ_NSR_IA3_cEELl0EEEEEEELl2EEEEENS15_ISsS18_NS14_3tag8smessageESH_EEEELl2EEEEEEENS6_14empty_arg_listEEEEEEEENS_6detail15sp_if_not_arrayIT_E4typeEDpOT0_]+0x91): undefined reference to `boost::log::v2_mt_posix::sinks::text_file_backend::construct(boost::filesystem::path const&, std::_Ios_Openmode, unsigned long, boost::log::v2_mt_posix::aux::light_function<bool ()> const&, bool, bool)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::attributes::basic_clock<boost::log::v2_mt_posix::attributes::local_time_traits>::impl::get_value()':
main.cpp:(.text._ZN5boost3log11v2_mt_posix10attributes11basic_clockINS2_17local_time_traitsEE4impl9get_valueEv[_ZN5boost3log11v2_mt_posix10attributes11basic_clockINS2_17local_time_traitsEE4impl9get_valueEv]+0x1ee): undefined reference to `boost::log::v2_mt_posix::attribute::impl::operator new(unsigned long)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::detail::sp_if_not_array<boost::log::v2_mt_posix::sinks::synchronous_sink<boost::log::v2_mt_posix::sinks::text_file_backend> >::type boost::make_shared<boost::log::v2_mt_posix::sinks::synchronous_sink<boost::log::v2_mt_posix::sinks::text_file_backend>, boost::shared_ptr<boost::log::v2_mt_posix::sinks::text_file_backend>&>(boost::shared_ptr<boost::log::v2_mt_posix::sinks::text_file_backend>&)':
main.cpp:(.text._ZN5boost11make_sharedINS_3log11v2_mt_posix5sinks16synchronous_sinkINS3_17text_file_backendEEEJRNS_10shared_ptrIS5_EEEEENS_6detail15sp_if_not_arrayIT_E4typeEDpOT0_[_ZN5boost11make_sharedINS_3log11v2_mt_posix5sinks16synchronous_sinkINS3_17text_file_backendEEEJRNS_10shared_ptrIS5_EEEEENS_6detail15sp_if_not_arrayIT_E4typeEDpOT0_]+0xb8): undefined reference to `boost::log::v2_mt_posix::aux::default_attribute_names::message()'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::shared_ptr<boost::log::v2_mt_posix::sinks::synchronous_sink<boost::log::v2_mt_posix::sinks::text_file_backend> > boost::log::v2_mt_posix::aux::add_file_log<boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2_mt_posix::keywords::tag::file_name, char const [13]>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [7]>, 0l> > >, 2l> >, boost::log::v2_mt_posix::expressions::attribute_actor<boost::log::v2_mt_posix::trivial::severity_level, boost::log::v2_mt_posix::fallback_to_none, boost::log::v2_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2_mt_posix::expressions::attribute_actor<std::string, boost::log::v2_mt_posix::fallback_to_none, boost::log::v2_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const>, boost::parameter::aux::empty_arg_list> > >(boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2_mt_posix::keywords::tag::file_name, char const [13]>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::log::v2_mt_posix::keywords::tag::format, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [7]>, 0l> > >, 2l> >, boost::log::v2_mt_posix::expressions::attribute_actor<boost::log::v2_mt_posix::trivial::severity_level, boost::log::v2_mt_posix::fallback_to_none, boost::log::v2_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2_mt_posix::expressions::attribute_actor<std::string, boost::log::v2_mt_posix::fallback_to_none, boost::log::v2_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > const>, boost::parameter::aux::empty_arg_list> > const&)':
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux12add_file_logINS_9parameter3aux8arg_listINS5_15tagged_argumentINS1_8keywords3tag9file_nameEA13_KcEENS6_INS7_INS9_6formatEKNS_7phoenix5actorINS_5proto7exprns_10basic_exprINSH_6tagns_3tag10shift_leftENSH_7argsns_5list2INSG_INSJ_ISM_NSO_INSG_INSJ_ISM_NSO_INSG_INSJ_ISM_NSO_INSG_INSJ_INSL_8terminalENSN_4termINSF_8argumentILi2EEEEELl0EEEEENSG_INSJ_ISP_NSQ_IA7_cEELl0EEEEEEELl2EEEEENS1_11expressions15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS15_3tag8severityESG_EEEELl2EEEEENSG_INSJ_ISP_NSQ_IA3_cEELl0EEEEEEELl2EEEEENS14_ISsS17_NS13_3tag8smessageESG_EEEELl2EEEEEEENS5_14empty_arg_listEEEEEEENS_10shared_ptrINS1_5sinks16synchronous_sinkINS1X_17text_file_backendEEEEERKT_[_ZN5boost3log11v2_mt_posix3aux12add_file_logINS_9parameter3aux8arg_listINS5_15tagged_argumentINS1_8keywords3tag9file_nameEA13_KcEENS6_INS7_INS9_6formatEKNS_7phoenix5actorINS_5proto7exprns_10basic_exprINSH_6tagns_3tag10shift_leftENSH_7argsns_5list2INSG_INSJ_ISM_NSO_INSG_INSJ_ISM_NSO_INSG_INSJ_ISM_NSO_INSG_INSJ_INSL_8terminalENSN_4termINSF_8argumentILi2EEEEELl0EEEEENSG_INSJ_ISP_NSQ_IA7_cEELl0EEEEEEELl2EEEEENS1_11expressions15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS15_3tag8severityESG_EEEELl2EEEEENSG_INSJ_ISP_NSQ_IA3_cEELl0EEEEEEELl2EEEEENS14_ISsS17_NS13_3tag8smessageESG_EEEELl2EEEEEEENS5_14empty_arg_listEEEEEEENS_10shared_ptrINS1_5sinks16synchronous_sinkINS1X_17text_file_backendEEEEERKT_]+0xba): undefined reference to `boost::log::v2_mt_posix::core::get()'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux12add_file_logINS_9parameter3aux8arg_listINS5_15tagged_argumentINS1_8keywords3tag9file_nameEA13_KcEENS6_INS7_INS9_6formatEKNS_7phoenix5actorINS_5proto7exprns_10basic_exprINSH_6tagns_3tag10shift_leftENSH_7argsns_5list2INSG_INSJ_ISM_NSO_INSG_INSJ_ISM_NSO_INSG_INSJ_ISM_NSO_INSG_INSJ_INSL_8terminalENSN_4termINSF_8argumentILi2EEEEELl0EEEEENSG_INSJ_ISP_NSQ_IA7_cEELl0EEEEEEELl2EEEEENS1_11expressions15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS15_3tag8severityESG_EEEELl2EEEEENSG_INSJ_ISP_NSQ_IA3_cEELl0EEEEEEELl2EEEEENS14_ISsS17_NS13_3tag8smessageESG_EEEELl2EEEEEEENS5_14empty_arg_listEEEEEEENS_10shared_ptrINS1_5sinks16synchronous_sinkINS1X_17text_file_backendEEEEERKT_[_ZN5boost3log11v2_mt_posix3aux12add_file_logINS_9parameter3aux8arg_listINS5_15tagged_argumentINS1_8keywords3tag9file_nameEA13_KcEENS6_INS7_INS9_6formatEKNS_7phoenix5actorINS_5proto7exprns_10basic_exprINSH_6tagns_3tag10shift_leftENSH_7argsns_5list2INSG_INSJ_ISM_NSO_INSG_INSJ_ISM_NSO_INSG_INSJ_ISM_NSO_INSG_INSJ_INSL_8terminalENSN_4termINSF_8argumentILi2EEEEELl0EEEEENSG_INSJ_ISP_NSQ_IA7_cEELl0EEEEEEELl2EEEEENS1_11expressions15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS15_3tag8severityESG_EEEELl2EEEEENSG_INSJ_ISP_NSQ_IA3_cEELl0EEEEEEELl2EEEEENS14_ISsS17_NS13_3tag8smessageESG_EEEELl2EEEEEEENS5_14empty_arg_listEEEEEEENS_10shared_ptrINS1_5sinks16synchronous_sinkINS1X_17text_file_backendEEEEERKT_]+0xe4): undefined reference to `boost::log::v2_mt_posix::core::add_sink(boost::shared_ptr<boost::log::v2_mt_posix::sinks::sink> const&)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `main':
main.cpp:(.text.startup+0x2b): undefined reference to `boost::log::v2_mt_posix::attribute_name::get_id_from_string(char const*)'
main.cpp:(.text.startup+0x88): undefined reference to `boost::log::v2_mt_posix::aux::default_attribute_names::message()'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::aux::light_function<void (boost::log::v2_mt_posix::record_view const&, boost::log::v2_mt_posix::expressions::aux::stream_ref<boost::log::v2_mt_posix::basic_formatting_ostream<char, std::char_traits<char>, std::allocator<char> > >)>::impl<boost::log::v2_mt_posix::expressions::aux::message_formatter>::invoke_impl(void*, boost::log::v2_mt_posix::record_view const&, boost::log::v2_mt_posix::expressions::aux::stream_ref<boost::log::v2_mt_posix::basic_formatting_ostream<char, std::char_traits<char>, std::allocator<char> > >)':
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_]+0x1f): undefined reference to `boost::log::v2_mt_posix::attribute_value_set::find(boost::log::v2_mt_posix::attribute_name) const'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_]+0x2a): undefined reference to `boost::log::v2_mt_posix::attribute_value_set::end() const'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_]+0x127): undefined reference to `boost::log::v2_mt_posix::aux::once_block_sentry::commit()'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_]+0x146): undefined reference to `boost::log::v2_mt_posix::aux::once_block_sentry::enter_once_block() const'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_]+0x166): undefined reference to `boost::log::v2_mt_posix::aux::once_block_sentry::rollback()'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS8_17message_formatterEE11invoke_implEPvS6_SF_]+0x1d2): undefined reference to `boost::log::v2_mt_posix::aux::attach_attribute_name_info(boost::exception&, boost::log::v2_mt_posix::attribute_name const&)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::aux::light_function<void (boost::log::v2_mt_posix::record_view const&, boost::log::v2_mt_posix::expressions::aux::stream_ref<boost::log::v2_mt_posix::basic_formatting_ostream<char, std::char_traits<char>, std::allocator<char> > >)>::impl<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::phoenix::argument<2> >, 0l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [7]>, 0l> > >, 2l> >, boost::log::v2_mt_posix::expressions::attribute_actor<boost::log::v2_mt_posix::trivial::severity_level, boost::log::v2_mt_posix::fallback_to_none, boost::log::v2_mt_posix::trivial::tag::severity, boost::phoenix::actor> >, 2l> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<char [3]>, 0l> > >, 2l> >, boost::log::v2_mt_posix::expressions::attribute_actor<std::string, boost::log::v2_mt_posix::fallback_to_none, boost::log::v2_mt_posix::expressions::tag::smessage, boost::phoenix::actor> >, 2l> > >::invoke_impl(void*, boost::log::v2_mt_posix::record_view const&, boost::log::v2_mt_posix::expressions::aux::stream_ref<boost::log::v2_mt_posix::basic_formatting_ostream<char, std::char_traits<char>, std::allocator<char> > >)':
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_]+0x54): undefined reference to `boost::log::v2_mt_posix::attribute_value_set::find(boost::log::v2_mt_posix::attribute_name) const'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_]+0x5f): undefined reference to `boost::log::v2_mt_posix::attribute_value_set::end() const'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_]+0xf0): undefined reference to `boost::log::v2_mt_posix::trivial::to_string(boost::log::v2_mt_posix::trivial::severity_level)'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_]+0x14b): undefined reference to `boost::log::v2_mt_posix::attribute_value_set::find(boost::log::v2_mt_posix::attribute_name) const'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_]+0x156): undefined reference to `boost::log::v2_mt_posix::attribute_value_set::end() const'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_]+0x2e7): undefined reference to `boost::log::v2_mt_posix::aux::attach_attribute_name_info(boost::exception&, boost::log::v2_mt_posix::attribute_name const&)'
main.cpp:(.text._ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_[_ZN5boost3log11v2_mt_posix3aux14light_functionIFvRKNS1_11record_viewENS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEE4implINS_7phoenix5actorINS_5proto7exprns_10basic_exprINSL_6tagns_3tag10shift_leftENSL_7argsns_5list2INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_ISQ_NSS_INSK_INSN_INSP_8terminalENSR_4termINSJ_8argumentILi2EEEEELl0EEEEENSK_INSN_IST_NSU_IA7_cEELl0EEEEEEELl2EEEEENS7_15attribute_actorINS1_7trivial14severity_levelENS1_16fallback_to_noneENS18_3tag8severityESK_EEEELl2EEEEENSK_INSN_IST_NSU_IA3_cEELl0EEEEEEELl2EEEEENS17_ISsS1A_NS7_3tag8smessageESK_EEEELl2EEEEEE11invoke_implEPvS6_SF_]+0x302): undefined reference to `boost::log::v2_mt_posix::aux::attach_attribute_name_info(boost::exception&, boost::log::v2_mt_posix::attribute_name const&)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `void boost::log::v2_mt_posix::basic_formatting_ostream<char, std::char_traits<char>, std::allocator<char> >::aligned_write<wchar_t>(wchar_t const*, long)':
main.cpp:(.text._ZN5boost3log11v2_mt_posix24basic_formatting_ostreamIcSt11char_traitsIcESaIcEE13aligned_writeIwEEvPKT_l[_ZN5boost3log11v2_mt_posix24basic_formatting_ostreamIcSt11char_traitsIcESaIcEE13aligned_writeIwEEvPKT_l]+0xb6): undefined reference to `boost::log::v2_mt_posix::aux::code_convert_impl(wchar_t const*, unsigned long, std::string&, unsigned long, std::locale const&)'
main.cpp:(.text._ZN5boost3log11v2_mt_posix24basic_formatting_ostreamIcSt11char_traitsIcESaIcEE13aligned_writeIwEEvPKT_l[_ZN5boost3log11v2_mt_posix24basic_formatting_ostreamIcSt11char_traitsIcESaIcEE13aligned_writeIwEEvPKT_l]+0x1ec): undefined reference to `boost::log::v2_mt_posix::aux::code_convert_impl(wchar_t const*, unsigned long, std::string&, unsigned long, std::locale const&)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `void boost::log::v2_mt_posix::type_dispatcher::callback_base::trampoline<boost::log::v2_mt_posix::binder1st<boost::log::v2_mt_posix::output_fun, boost::log::v2_mt_posix::expressions::aux::stream_ref<boost::log::v2_mt_posix::basic_formatting_ostream<char, std::char_traits<char>, std::allocator<char> > >&>, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >(void*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)':
main.cpp:(.text._ZN5boost3log11v2_mt_posix15type_dispatcher13callback_base10trampolineINS1_9binder1stINS1_10output_funERNS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEESbIwSB_IwESaIwEEEEvPvRKT0_[_ZN5boost3log11v2_mt_posix15type_dispatcher13callback_base10trampolineINS1_9binder1stINS1_10output_funERNS1_11expressions3aux10stream_refINS1_24basic_formatting_ostreamIcSt11char_traitsIcESaIcEEEEEEESbIwSB_IwESaIwEEEEvPvRKT0_]+0xd5): undefined reference to `boost::log::v2_mt_posix::aux::code_convert_impl(wchar_t const*, unsigned long, std::string&, unsigned long, std::locale const&)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::sinks::sink::try_consume(boost::log::v2_mt_posix::record_view const&)':
main.cpp:(.text._ZN5boost3log11v2_mt_posix5sinks4sink11try_consumeERKNS1_11record_viewE[_ZN5boost3log11v2_mt_posix5sinks4sink11try_consumeERKNS1_11record_viewE]+0x111): undefined reference to `boost::log::v2_mt_posix::sinks::text_file_backend::consume(boost::log::v2_mt_posix::record_view const&, std::string const&)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::sinks::synchronous_sink<boost::log::v2_mt_posix::sinks::text_file_backend>::try_consume(boost::log::v2_mt_posix::record_view const&)':
main.cpp:(.text._ZN5boost3log11v2_mt_posix5sinks16synchronous_sinkINS2_17text_file_backendEE11try_consumeERKNS1_11record_viewE[_ZN5boost3log11v2_mt_posix5sinks16synchronous_sinkINS2_17text_file_backendEE11try_consumeERKNS1_11record_viewE]+0x121): undefined reference to `boost::log::v2_mt_posix::sinks::text_file_backend::consume(boost::log::v2_mt_posix::record_view const&, std::string const&)'
CMakeFiles/azurestoragetest.dir/main.cpp.o: In function `boost::log::v2_mt_posix::sinks::synchronous_sink<boost::log::v2_mt_posix::sinks::text_file_backend>::consume(boost::log::v2_mt_posix::record_view const&)':
main.cpp:(.text._ZN5boost3log11v2_mt_posix5sinks16synchronous_sinkINS2_17text_file_backendEE7consumeERKNS1_11record_viewE[_ZN5boost3log11v2_mt_posix5sinks16synchronous_sinkINS2_17text_file_backendEE7consumeERKNS1_11record_viewE]+0x10b): undefined reference to `boost::log::v2_mt_posix::sinks::text_file_backend::consume(boost::log::v2_mt_posix::record_view const&, std::string const&)'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::attribute_set::~attribute_set()'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::attribute_set::attribute_set()'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::sources::aux::get_severity_level()'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::core::open_record(boost::log::v2_mt_posix::attribute_set const&)'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::aux::unhandled_exception_count()'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::record_view::public_data::destroy(boost::log::v2_mt_posix::record_view::public_data const*)'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::aux::stream_provider<char>::allocate_compound(boost::log::v2_mt_posix::record&)'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::attribute_set::insert(boost::log::v2_mt_posix::attribute_name, boost::log::v2_mt_posix::attribute const&)'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::core::push_record_move(boost::log::v2_mt_posix::record&)'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::aux::default_attribute_names::severity()'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::aux::stream_provider<char>::release_compound(boost::log::v2_mt_posix::aux::stream_provider<char>::stream_compound*)'
../Binaries/libazurestorage.so.7.5: undefined reference to `boost::log::v2_mt_posix::core::get_logging_enabled() const'
collect2: error: ld returned 1 exit status
make[2]: *** [tests/CMakeFiles/azurestoragetest.dir/build.make:611: Binaries/azurestoragetest] Error 1
make[1]: *** [CMakeFiles/Makefile2:161: tests/CMakeFiles/azurestoragetest.dir/all] Error 2
make: *** [Makefile:160: all] Error 2

So I have

trevorwhitaker commented 3 years ago

After looking this up a bit it looks like the tests don't like the static boost lib. I fixed this by commenting out the places with this line in the CMakeLists.txt file and rebuilt

if (BUILD_SHARED_LIBS)
    add_definitions(-DBOOST_LOG_DYN_LINK)
endif()

I don't think BUILD_SHARED_LIBS is the correct flag to use to determine if we should be adding -DBOOST_LOG_DYN_LINK since this falls apart in the case you are using static version of boost but trying to build shared lib (I'm not sure how common this is but should still be taken in to account).

Note that the actual lib built and linked fine regardless of the BOOST_LOG_DYN_LINK define, it was just the tests that had the issue.