10 Aralık 2016 Cumartesi

log linkleme

BOOST_LOG_DYN_LINK
Açıklaması şöyle. Windows'ta bu macro'yu tanımlamak gereksiz. Gcc'de .so ile linklemek istiyorsak tanımlamak gerekir.
If defined in user code, the library will assume the binary is built as a dynamically loaded library ("dll" or "so"). Otherwise it is assumed that the library is built in static mode. This macro must be either defined or not defined for all translation units of user application that uses logging. This macro can help with auto-linking on platforms that support it.
Gcc
Derlerken şöyle yaparız.
g++ ... -DBOOST_LOG_DYN_LINK ...
 -lpthread -lboost_filesystem -lboost_log_setup -lboost_log
Eğer derlerken değil de linklerken yapmaya kalkarsak doğal olarak hata alırız. Yani şu adım yanlış.
g++ -DBOOST_LOG_DYN_LINK boosttest.o -o boosttest -lboost_log -lpthread
Bir diğer seçenek ise kodda bu macroyu tanımlamak şöyle yaparız.
#define BOOST_LOG_DYN_LINK 1
CMake
Şöyle yaparız.
...
add_definitions( -DBOOST_LOG_DYN_LINK )

target_link_libraries(testapp
    ...
    pthread
    boost_system
    boost_log
)

Hiç yorum yok:

Yorum Gönder