c - Raspberry Pi 上的 rodata

标签 c gcc linker raspberry-pi

我正在尝试在我的 Raspberry Pi 裸机操作系统上创建一个简单的 printf 函数。

函数现在是空的:

int kprintf(const char *string, ...) {
}

目前,我可以在屏幕上绘图。但是,我在调用这个函数时遇到了问题。 作为测试,我在调用 kprintf 之前在屏幕上绘制了几个字符。

如果我使用:

kprintf ("HELLO");

屏幕一片空白。但是,如果我使用:

kprintf ("HE");

一切正常。此时我唯一能想到的是,链接描述文件一定有问题。也许是 rodata 部分。

我正在使用来自剑桥 RPi 教程的修改后的链接描述文件:

STARTUP(crt0.o)

SECTIONS {
    .init 0x8000 : {
        *(.init)
    }

    .text 0x8080 : {
        *(.text)
        *(.rodata)
    }

    .data : {
        *(.data)
    }

    .bss : {
        *(.bss)
        *(COMMON)
    }

    /DISCARD/ : {
        *(*)
    }
}

有什么想法吗?

最佳答案

仅供引用,如果我使用这个链接描述文件似乎没问题:

STARTUP(crt0.o)

SECTIONS {
    .init 0x8000 : {
        *(.init)
    }

    .text 0x9000 : {
        *(.text)
        *(.rodata)
        *(COMMON)
    }

    .data : {
        *(.data)
    }

    .bss : {
        *(.bss)
    }

    /DISCARD/ : {
        *(*)
    }
}

希望这对以后的其他人有帮助

关于c - Raspberry Pi 上的 rodata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13909596/

相关文章:

python - C 到 Python 代码转换(打印类似地址的值)

c - 为什么说 vp 和 pf 都在结构节点中时未声明?

linux - gcc 4.8.2 没有可识别的调试信息

c++ - 强制 clang 在此 C++ 代码片段上生成编译错误

c - 链接器如何解决动态可加载库中的重复符号?

c# - PInvoke 使堆栈不平衡

c - 接收两个矩阵的元素后出现分割错误

c++ - 递归push_back不适用于自定义类

c++ - g++ 链接问题

macos - 在OS/X上与OpenCV链接错误