gpt4 book ai didi

c - 如何通过 RTEMS 链接应用程序以进行动态加载?

转载 作者:太空宇宙 更新时间:2023-11-04 04:16:00 28 4
gpt4 key购买 nike

我正在使用 RTEMS 4.11 和内置的 POSIX API 函数将程序图像动态加载到内存中。使用以下代码将程序图像加载到 RTEMS 中:

void* handle = dlopen(prog_name, RTLD_NOW | RTLD_GLOBAL);
if (!handle)
printf("dlopen: %s\n", dlerror());

我正在使用 RTEMS Source Builder 构建的 GCC 来编译内存文件系统中位于 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 程序。有什么想法吗?

最佳答案

原来唯一重要的选项是-c(编译和汇编但不链接)。

$ /opt/rtems-4.11/bin/sparc-rtems4.11-gcc test.c -c -o test.elf
$ # this now works

Credit

关于c - 如何通过 RTEMS 链接应用程序以进行动态加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52371011/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com