Я использую RTEMS 4.11 и встроенные функции POSIX API для динамической загрузки образа программы в память.Образ программы загружается в RTEMS с использованием следующего кода:
void* handle = dlopen(prog_name, RTLD_NOW | RTLD_GLOBAL);
if (!handle)
printf("dlopen: %s\n", dlerror());
Я использую GCC, созданный RTEMS Source Builder, для компиляции объекта, расположенного в prog_name
в файловой системе в памяти.
Какую командную строку следует использовать для правильной компиляции одного файла C, который будет загружен таким образом?
Для справки, я попробовал следующие параметры командной строки, но получилошибка:
$ /opt/rtems-4.11/bin/sparc-rtems4.11-gcc test.c -c -o test.elf -shared -fPIC -nostdlib
$ # dlopen: global symbol not found: _GLOBAL_OFFSET_TABLE_
$ /opt/rtems-4.11/bin/sparc-rtems4.11-gcc test.c -o test.elf -fPIC -shared -nostdlib
$ # dlopen: ELF file contains program headers
Я также пробовал некоторые другие комбинации, а также с помощью программы rtems-ld
.Есть идеи?