Thanks again Andy!
I am sending this note to thank Andy for his gracious help and to document the resolution for future newbies.
Andy's suggestion to "nm -Cg" the boost.log directories was just what I needed! (Sorry, I should have remembered the -C option when I got nothing but garbage.)
What I found was that the header files I use, generate a reference to ...::v2s_mt_nt5::..., while the libraries only define the namespace with ...::v2_mt_nt5::...
For example, my code has the following:
#include
#include
#include
#include
#include
namespace logging = boost::log ;
namespace src = boost::log::sources ;
namespace keywords= logging::keywords ;
namespace sinks = boost::log::sinks ;
void init_logger() {
logging::add_file_log(
"sample.log",
keywords::rotation_size = 10 * 1024 * 1024,
keywords::time_based_rotation = sinks::file::rotation_at_time_point(0,0,0),
keywords::format = "[%TimeStamp%]: %Message%",
keywords::auto_flush=true
) ;
logging::core::get()->set_filter (logging::trivial::severity >= logging::trivial::info ) ;
logging::core::get()->add_global_attribute("TimeStamp", boost::log::attributes::local_clock());
}
...
I compiled with the following command from my makefile:
cc -g -DCPU=PENTIUM -DMC68000 -DDoing2VxWorks -IC:\boost -I../source -I../include -MMD -MP -c -o obj\logLib.o logLib.cpp
Which I built with the following command from my makefile:
cc -g -DCPU=PENTIUM -DMC68000 -DDoing2VxWorks -IC:\boost -I../source -I../include -MMD -MP -c -o obj\logLib.o logLib.cpp
gfortran -o unit01test.exe obj\unit01test.o ..\mcpmain\obj\rtinit.o ..\mcpmain\obj\bite2.o ..\mcpmain\obj\bmain.o ..\mcpmain\obj\keypm2.o ..\mcpmain\obj\ksvc.o ..\mcpmain\obj\scen1.o ..\mcpmain\obj\disup.o ..\mcpmain\obj\idisup.o ..\mcpmain\obj\keyin.o ..\mcpmain\obj\disdr.o ..\mcpmain\obj\led_task.o ..\mcpmain\obj\spip_task.o ..\mcpmain\obj\iff_task.o ..\mcpmain\obj\inmsgmgr.o ..\mcpmain\obj\cppmainUnit01Test.o ..\runhistory\obj\rhlog_api.o ..\utilities\obj\main2aux.o ../../vxWorksLib/vxWorksLib/vxWorks/source/obj\logLib.o ../../vxWorksLib/vxWorksLib/vxWorks/source/obj\msgQlib.o ../../vxWorksLib/vxWorksLib/vxWorks/source/obj\pciConfigLib.o ../../vxWorksLib/vxWorksLib/vxWorks/source/obj\semLib.o ../../vxWorksLib/vxWorksLib/vxWorks/source/obj\sharedMemLib.o ../../vxWorksLib/vxWorksLib/vxWorks/source/obj\sockLib.o ../../vxWorksLib/vxWorksLib/vxWorks/source/obj\sysLib.o ../../vxWorksLib/vxWorksLib/vxWorks/source/obj\taskLib.o ../../vxWorksLib/vxWorksLib/vxWorks/source/obj\wdLib.o -LC:\boost\stage\lib -lboost_log_setup-mgw48-mt-d-1_61 -lboost_log-mgw48-mt-d-1_61 -lboost_thread-mgw48-mt-d-1_61 -lboost_system-mgw48-mt-d-1_61 -LC:\Windows\SysWOW\en-US -lws2_32 -lstdc++ -lboost_log_setup-mgw48-mt-d-1_61 -lboost_log-mgw48-mt-d-1_61
which gives me the error:
../../vxWorksLib/vxWorksLib/vxWorks/source/obj\logLib.o: In function `Z11init_loggerv':
c:\1PortMUTES2MinGW\ProjectRepository-Build\vxWorksLib\vxWorksLib\vxWorks\source/logLib.cpp:16: undefined reference to `boost::log::v2s_mt_nt5::sinks::file::rotation_at_time_point::rotation_at_time_point(unsigned char, unsigned char, unsigned char)'
But when I check the nm output, I find the following ::v2_mt_nt5:: namespace defined in all of the various forms of the Boost log libraries:
d000608.o:
U _head_libboost_log_mgw48_mt_d_1_61_dll
00000000 I _imp___ZNK5boost3log9v2_mt_nt55sinks4file25rotation_at_time_intervalclEv
00000000 T boost::log::v2_mt_nt5::sinks::file::rotation_at_time_interval::operator()() const
I built my boost libraries using the directions for a MinGW build. I built my code using the same MinGW framework.
However, I found the reason for the two conflicting name spaces, v2_mt_nt5 and v2s_mt_nt5 at:
http://www.boost.org/doc/libs/1_56_0/libs/log/doc/html/log/rationale/namespa...
The magic key is to recognize the <linkage> name space. I resolved most of my Boost log problem by adding -DBOOST_ALL_DYN_LINK to the compile operation. The correct compile command is:
cc -g -DCPU=PENTIUM -DMC68000 -DDoing2VxWorks - DBOOST_ALL_DYN_LINK -IC:\boost -I../source -I../include -MMD -MP -c -o obj\logLib.o logLib.cpp
Note that I was able to resolve my remaining errors where gcc just listed the mangled symbol by grep'ing the library file.