<div dir="ltr"><span style="font-size:12.8px">Hi,</span><br><div style="font-size:12.8px"> I am trying to write a small library for RTEMS for use with OROCOS RTT.The following are the contents:</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><b><u>rtt_hello.hpp</u></b></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><div>#include <bsp.h></div><div><br></div><div>#include <rtems.h></div><div>#include <stdio.h></div><div>#include <stdlib.h></div><div>#include <iostream></div><div><br></div><div>class displayer</div><div>{</div><div><span style="white-space:pre-wrap">  </span>public:</div><div><span style="white-space:pre-wrap">          </span>void display();</div><div>};</div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><b><u>displayer.cpp</u></b></div><div style="font-size:12.8px"><b><u><br></u></b></div><div style="font-size:12.8px"><div>#include <iostream></div><div>#include "rtt_hello.hpp"</div><div>void displayer::display()</div><div>{</div><div><span style="white-space:pre-wrap">   </span>std::cout<<"Hello";</div><div>}</div><div><br></div><div>/* configuration information */</div><div><br></div><div>#include <bsp.h></div><div><br></div><div>#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER</div><div>#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER</div><div><br></div><div>#define CONFIGURE_RTEMS_INIT_TASKS_TABLE</div><div><br></div><div>#define CONFIGURE_MAXIMUM_TASKS 1</div><div>/*</div><div> * GCC C++ support requires Classic Semaphores but this could change to </div><div> * POSIX mutexes at some point in the future. When that happens, this will</div><div> * need to change.</div><div> */</div><div>#define CONFIGURE_MAXIMUM_SEMAPHORES 1</div><div><br></div><div>#define CONFIGURE_INIT</div><div><br></div><div>#include <rtems/confdefs.h></div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">When I am trying to compile the above I get a link failure error:</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><div>sambeet@Holmes ~/NewRockPort/x86/Build/rock/rtt_test $ /home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/bin/i386-rtems4.11-g++ displayer.cpp -Ihome/sambeet/NewRockPort/x86/Build/rock/rtt_test/ -I/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/i386-rtems4.11/pc586/lib/include/</div><div>/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/lib/gcc/i386-rtems4.11/4.9.3/../../../../i386-rtems4.11/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000008048080</div><div>/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/lib/gcc/i386-rtems4.11/4.9.3/libstdc++.a(locale.o): In function `__gnu_cxx::__mutex::~__mutex()':</div><div>/home/sambeet/NewRockPort/x86/Build/rtems/rtems-source-builder-4.11.0-rc3/rtems/build/i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-linux-gnu-1/build/i386-rtems4.11/libstdc++-v3/include/i386-rtems4.11/bits/gthr-default.h:113: undefined reference to `rtems_gxx_mutex_destroy'</div><div>/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/lib/gcc/i386-rtems4.11/4.9.3/libstdc++.a(locale.o): In function `get_locale_cache_mutex':</div><div>/home/sambeet/NewRockPort/x86/Build/rtems/rtems-source-builder-4.11.0-rc3/rtems/build/i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-linux-gnu-1/build/i386-rtems4.11/libstdc++-v3/src/c++98/../../../../../gcc-4.9.3/libstdc++-v3/src/c++98/locale.cc:36: undefined reference to `__dso_handle'</div><div>/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/lib/gcc/i386-rtems4.11/4.9.3/libstdc++.a(eh_alloc.o): In function `__static_initialization_and_destruction_0':</div><div>/home/sambeet/NewRockPort/x86/Build/rtems/rtems-source-builder-4.11.0-rc3/rtems/build/i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-linux-gnu-1/build/i386-rtems4.11/libstdc++-v3/libsupc++/../../../../gcc-4.9.3/libstdc++-v3/libsupc++/eh_alloc.cc:96: undefined reference to `__dso_handle'</div><div>/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/lib/gcc/i386-rtems4.11/4.9.3/libstdc++.a(locale_init.o): In function `(anonymous namespace)::get_locale_mutex()':</div><div>/home/sambeet/NewRockPort/x86/Build/rtems/rtems-source-builder-4.11.0-rc3/rtems/build/i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-linux-gnu-1/build/i386-rtems4.11/libstdc++-v3/src/c++98/../../../../../gcc-4.9.3/libstdc++-v3/src/c++98/locale_init.cc:36: undefined reference to `__dso_handle'</div><div>/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/lib/gcc/i386-rtems4.11/4.9.3/libstdc++.a(future.o): In function `std::future_category()':</div><div>/home/sambeet/NewRockPort/x86/Build/rtems/rtems-source-builder-4.11.0-rc3/rtems/build/i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-linux-gnu-1/build/i386-rtems4.11/libstdc++-v3/src/c++11/../../../../../gcc-4.9.3/libstdc++-v3/src/c++11/future.cc:63: undefined reference to `__dso_handle'</div><div>/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/lib/gcc/i386-rtems4.11/4.9.3/libstdc++.a(system_error.o): In function `__static_initialization_and_destruction_0':</div><div>/home/sambeet/NewRockPort/x86/Build/rtems/rtems-source-builder-4.11.0-rc3/rtems/build/i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-linux-gnu-1/build/i386-rtems4.11/libstdc++-v3/src/c++11/../../../../../gcc-4.9.3/libstdc++-v3/src/c++11/system_error.cc:65: undefined reference to `__dso_handle'</div><div>/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/lib/gcc/i386-rtems4.11/4.9.3/libstdc++.a(system_error.o):/home/sambeet/NewRockPort/x86/Build/rtems/rtems-source-builder-4.11.0-rc3/rtems/build/i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-linux-gnu-1/build/i386-rtems4.11/libstdc++-v3/src/c++11/../../../../../gcc-4.9.3/libstdc++-v3/src/c++11/system_error.cc:66: more undefined references to `__dso_handle' follow</div><div>/tmp/ccY2UDiC.o: In function `_Thread_Get_executing':</div><div>displayer.cpp:(.text+0x24): undefined reference to `_Per_CPU_Information'</div><div>/tmp/ccY2UDiC.o: In function `__static_initialization_and_destruction_0(int, int)':</div><div>displayer.cpp:(.text+0x69): undefined reference to `__dso_handle'</div><div>/tmp/ccY2UDiC.o:(.data+0x18): undefined reference to `Init'</div><div>/tmp/ccY2UDiC.o:(.data+0x20): undefined reference to `bsp_boot_cmdline'</div><div>/tmp/ccY2UDiC.o:(.data+0x24): undefined reference to `console_initialize'</div><div>/tmp/ccY2UDiC.o:(.data+0x28): undefined reference to `console_open'</div><div>/tmp/ccY2UDiC.o:(.data+0x2c): undefined reference to `console_close'</div><div>/tmp/ccY2UDiC.o:(.data+0x30): undefined reference to `console_read'</div><div>/tmp/ccY2UDiC.o:(.data+0x34): undefined reference to `console_write'</div><div>/tmp/ccY2UDiC.o:(.data+0x38): undefined reference to `console_control'</div><div>/tmp/ccY2UDiC.o:(.data+0x78): undefined reference to `_RTEMS_tasks_Initialize_user_tasks_body'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x8): undefined reference to `rtems_libio_init'</div><div>/tmp/ccY2UDiC.o:(.rodata+0xc): undefined reference to `rtems_libio_post_driver'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x10): undefined reference to `rtems_libio_exit'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x14): undefined reference to `rtems_filesystem_initialize'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x24): undefined reference to `IMFS_initialize_support'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x64): undefined reference to `_Scheduler_priority_Initialize'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x68): undefined reference to `_Scheduler_priority_Schedule'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x6c): undefined reference to `_Scheduler_priority_Yield'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x70): undefined reference to `_Scheduler_priority_Block'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x74): undefined reference to `_Scheduler_priority_Unblock'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x78): undefined reference to `_Scheduler_priority_Change_priority'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x7c): undefined reference to `_Scheduler_default_Node_initialize'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x80): undefined reference to `_Scheduler_default_Node_destroy'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x84): undefined reference to `_Scheduler_priority_Update_priority'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x88): undefined reference to `_Scheduler_priority_Priority_compare'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x8c): undefined reference to `_Scheduler_default_Release_job'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x90): undefined reference to `_Scheduler_default_Tick'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x94): undefined reference to `_Scheduler_default_Start_idle'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x9c): undefined reference to `rtems_heap_null_extend'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x120): undefined reference to `_CPU_Thread_Idle_body'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x130): undefined reference to `_Workspace_Allocate'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x134): undefined reference to `_Workspace_Free'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x160): undefined reference to `rtems_filesystem_default_lock'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x164): undefined reference to `rtems_filesystem_default_unlock'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x168): undefined reference to `IMFS_eval_path'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x16c): undefined reference to `IMFS_link'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x170): undefined reference to `rtems_filesystem_default_are_nodes_equal'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x174): undefined reference to `IMFS_mknod'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x178): undefined reference to `IMFS_rmnod'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x17c): undefined reference to `IMFS_fchmod'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x180): undefined reference to `IMFS_chown'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x184): undefined reference to `IMFS_node_clone'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x188): undefined reference to `IMFS_node_free'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x18c): undefined reference to `IMFS_mount'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x190): undefined reference to `IMFS_unmount'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x194): undefined reference to `rtems_filesystem_default_fsunmount'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x198): undefined reference to `IMFS_utime'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x19c): undefined reference to `IMFS_symlink'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x1a0): undefined reference to `IMFS_readlink'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x1a4): undefined reference to `IMFS_rename'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x1a8): undefined reference to `rtems_filesystem_default_statvfs'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x1ac): undefined reference to `IMFS_mknod_control_dir_default'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x1b0): undefined reference to `IMFS_mknod_control_device'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x1b4): undefined reference to `IMFS_mknod_control_memfile'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x1b8): undefined reference to `IMFS_mknod_control_enosys'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x1e0): undefined reference to `newlib_create_hook'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x200): undefined reference to `newlib_terminate_hook'</div><div>/tmp/ccY2UDiC.o:(.rodata+0x220): undefined reference to `bsp_fatal_extension'</div><div>/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/lib/gcc/i386-rtems4.11/4.9.3/../../../../i386-rtems4.11/bin/ld: a.out: hidden symbol `__dso_handle' isn't defined</div><div>/home/sambeet/NewRockPort/x86/Install/rtems/4.11.0-rc3/lib/gcc/i386-rtems4.11/4.9.3/../../../../i386-rtems4.11/bin/ld: final link failed: Bad value</div><div>collect2: error: ld returned 1 exit status</div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">How can I build my library and create an executable for i386-rtems?</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Regards</div><div style="font-size:12.8px">Sambeet</div><div class="" style="margin:2px 0px 0px;font-size:12.8px"><div id=":px" class="" tabindex="0"><img class="" src="https://ssl.gstatic.com/ui/v1/icons/mail/images/cleardot.gif"></div></div></div>