Building a library for RTEMS

Sambeet Panigrahi sambeet161616 at gmail.com
Thu Jul 14 20:19:22 UTC 2016


Hi,
 I am trying to write a small library for RTEMS for use with OROCOS RTT.The
following are the contents:

*rtt_hello.hpp*

#include <bsp.h>

#include <rtems.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>

class displayer
{
public:
void display();
};

*displayer.cpp*

#include <iostream>
#include "rtt_hello.hpp"
void displayer::display()
{
std::cout<<"Hello";
}

/* configuration information */

#include <bsp.h>

#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER

#define CONFIGURE_RTEMS_INIT_TASKS_TABLE

#define CONFIGURE_MAXIMUM_TASKS 1
/*
 * GCC C++ support requires Classic Semaphores but this could change to
 * POSIX mutexes at some point in the future. When that happens, this will
 * need to change.
 */
#define CONFIGURE_MAXIMUM_SEMAPHORES 1

#define CONFIGURE_INIT

#include <rtems/confdefs.h>

When I am trying to compile the above I get a link failure error:

sambeet at 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/
/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
/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()':
/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'
/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':
/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'
/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':
/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'
/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()':
/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'
/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()':
/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'
/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':
/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'
/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
/tmp/ccY2UDiC.o: In function `_Thread_Get_executing':
displayer.cpp:(.text+0x24): undefined reference to `_Per_CPU_Information'
/tmp/ccY2UDiC.o: In function
`__static_initialization_and_destruction_0(int, int)':
displayer.cpp:(.text+0x69): undefined reference to `__dso_handle'
/tmp/ccY2UDiC.o:(.data+0x18): undefined reference to `Init'
/tmp/ccY2UDiC.o:(.data+0x20): undefined reference to `bsp_boot_cmdline'
/tmp/ccY2UDiC.o:(.data+0x24): undefined reference to `console_initialize'
/tmp/ccY2UDiC.o:(.data+0x28): undefined reference to `console_open'
/tmp/ccY2UDiC.o:(.data+0x2c): undefined reference to `console_close'
/tmp/ccY2UDiC.o:(.data+0x30): undefined reference to `console_read'
/tmp/ccY2UDiC.o:(.data+0x34): undefined reference to `console_write'
/tmp/ccY2UDiC.o:(.data+0x38): undefined reference to `console_control'
/tmp/ccY2UDiC.o:(.data+0x78): undefined reference to
`_RTEMS_tasks_Initialize_user_tasks_body'
/tmp/ccY2UDiC.o:(.rodata+0x8): undefined reference to `rtems_libio_init'
/tmp/ccY2UDiC.o:(.rodata+0xc): undefined reference to
`rtems_libio_post_driver'
/tmp/ccY2UDiC.o:(.rodata+0x10): undefined reference to `rtems_libio_exit'
/tmp/ccY2UDiC.o:(.rodata+0x14): undefined reference to
`rtems_filesystem_initialize'
/tmp/ccY2UDiC.o:(.rodata+0x24): undefined reference to
`IMFS_initialize_support'
/tmp/ccY2UDiC.o:(.rodata+0x64): undefined reference to
`_Scheduler_priority_Initialize'
/tmp/ccY2UDiC.o:(.rodata+0x68): undefined reference to
`_Scheduler_priority_Schedule'
/tmp/ccY2UDiC.o:(.rodata+0x6c): undefined reference to
`_Scheduler_priority_Yield'
/tmp/ccY2UDiC.o:(.rodata+0x70): undefined reference to
`_Scheduler_priority_Block'
/tmp/ccY2UDiC.o:(.rodata+0x74): undefined reference to
`_Scheduler_priority_Unblock'
/tmp/ccY2UDiC.o:(.rodata+0x78): undefined reference to
`_Scheduler_priority_Change_priority'
/tmp/ccY2UDiC.o:(.rodata+0x7c): undefined reference to
`_Scheduler_default_Node_initialize'
/tmp/ccY2UDiC.o:(.rodata+0x80): undefined reference to
`_Scheduler_default_Node_destroy'
/tmp/ccY2UDiC.o:(.rodata+0x84): undefined reference to
`_Scheduler_priority_Update_priority'
/tmp/ccY2UDiC.o:(.rodata+0x88): undefined reference to
`_Scheduler_priority_Priority_compare'
/tmp/ccY2UDiC.o:(.rodata+0x8c): undefined reference to
`_Scheduler_default_Release_job'
/tmp/ccY2UDiC.o:(.rodata+0x90): undefined reference to
`_Scheduler_default_Tick'
/tmp/ccY2UDiC.o:(.rodata+0x94): undefined reference to
`_Scheduler_default_Start_idle'
/tmp/ccY2UDiC.o:(.rodata+0x9c): undefined reference to
`rtems_heap_null_extend'
/tmp/ccY2UDiC.o:(.rodata+0x120): undefined reference to
`_CPU_Thread_Idle_body'
/tmp/ccY2UDiC.o:(.rodata+0x130): undefined reference to
`_Workspace_Allocate'
/tmp/ccY2UDiC.o:(.rodata+0x134): undefined reference to `_Workspace_Free'
/tmp/ccY2UDiC.o:(.rodata+0x160): undefined reference to
`rtems_filesystem_default_lock'
/tmp/ccY2UDiC.o:(.rodata+0x164): undefined reference to
`rtems_filesystem_default_unlock'
/tmp/ccY2UDiC.o:(.rodata+0x168): undefined reference to `IMFS_eval_path'
/tmp/ccY2UDiC.o:(.rodata+0x16c): undefined reference to `IMFS_link'
/tmp/ccY2UDiC.o:(.rodata+0x170): undefined reference to
`rtems_filesystem_default_are_nodes_equal'
/tmp/ccY2UDiC.o:(.rodata+0x174): undefined reference to `IMFS_mknod'
/tmp/ccY2UDiC.o:(.rodata+0x178): undefined reference to `IMFS_rmnod'
/tmp/ccY2UDiC.o:(.rodata+0x17c): undefined reference to `IMFS_fchmod'
/tmp/ccY2UDiC.o:(.rodata+0x180): undefined reference to `IMFS_chown'
/tmp/ccY2UDiC.o:(.rodata+0x184): undefined reference to `IMFS_node_clone'
/tmp/ccY2UDiC.o:(.rodata+0x188): undefined reference to `IMFS_node_free'
/tmp/ccY2UDiC.o:(.rodata+0x18c): undefined reference to `IMFS_mount'
/tmp/ccY2UDiC.o:(.rodata+0x190): undefined reference to `IMFS_unmount'
/tmp/ccY2UDiC.o:(.rodata+0x194): undefined reference to
`rtems_filesystem_default_fsunmount'
/tmp/ccY2UDiC.o:(.rodata+0x198): undefined reference to `IMFS_utime'
/tmp/ccY2UDiC.o:(.rodata+0x19c): undefined reference to `IMFS_symlink'
/tmp/ccY2UDiC.o:(.rodata+0x1a0): undefined reference to `IMFS_readlink'
/tmp/ccY2UDiC.o:(.rodata+0x1a4): undefined reference to `IMFS_rename'
/tmp/ccY2UDiC.o:(.rodata+0x1a8): undefined reference to
`rtems_filesystem_default_statvfs'
/tmp/ccY2UDiC.o:(.rodata+0x1ac): undefined reference to
`IMFS_mknod_control_dir_default'
/tmp/ccY2UDiC.o:(.rodata+0x1b0): undefined reference to
`IMFS_mknod_control_device'
/tmp/ccY2UDiC.o:(.rodata+0x1b4): undefined reference to
`IMFS_mknod_control_memfile'
/tmp/ccY2UDiC.o:(.rodata+0x1b8): undefined reference to
`IMFS_mknod_control_enosys'
/tmp/ccY2UDiC.o:(.rodata+0x1e0): undefined reference to `newlib_create_hook'
/tmp/ccY2UDiC.o:(.rodata+0x200): undefined reference to
`newlib_terminate_hook'
/tmp/ccY2UDiC.o:(.rodata+0x220): undefined reference to
`bsp_fatal_extension'
/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
/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
collect2: error: ld returned 1 exit status

How can I build my library and create an executable for i386-rtems?


Regards
Sambeet
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20160715/2167fe54/attachment.html>


More information about the users mailing list