代码之家  ›  专栏  ›  技术社区  ›  Navaneeth Sen

MIPS平台的libSDL交叉编译问题

  •  1
  • Navaneeth Sen  · 技术社区  · 15 年前

    我试图为我的mips平台编译libSDL-1.2.14。
    但没有成功。

    这些是我尝试过的步骤:

    1. 导出路径=/opt/mips-4.3/bin:$PATH
    2. 进入libSDL-1.2.14源文件夹。
    3. 给出了一个“/configure--prefix=/usr/local/SDL_Lib--host=mips linux gnu”
    4. 执行“make”命令

    这是收到的错误:

    cc1:警告:包括位置 “/usr/include”对于 交叉编译
    ./src/audio/dma/SDL_dmaaudio.c:输入 函数“DMA-WaitAudio”: ./src/audio/dma/SDL_dmaaudio.c:167: 错误:在类中找不到寄存器 重新加载“asm”时显示“COP3_REGS”
    ./src/audio/dma/SDL_dmaaudio.c:167: 错误:“asm”操作数不可能 约束条件: * [生成/SDL_dmaaudio.lo]错误1

    但随后我通过以下命令重新配置make文件:

    1. 清理
    2. ./configure--prefix=/usr/local/SDL_Lib--host=mips linux gnu CPPFLAGS=-I/opt/mips-4.3/mips-linux-gnu/libc/usr/include/
    3. 制作

    注意:/opt/mips-4.3/mips-linux-gnu/libc/usr/include/-这是可以找到mips平台的select.h文件的路径。 它包含宏FD_ZERO和FD_SET的定义。

    但我还是犯了同样的错误。

    cc1:警告:包括位置 “/usr/include”对于 交叉编译
    ./src/audio/dma/SDL_dmaaudio.c:输入 函数“DMA-WaitAudio”:
    ./src/audio/dma/SDL_dmaaudio.c:167: 错误:在类中找不到寄存器 重新加载“asm”时显示“COP3_REGS”
    ./src/audio/dma/SDL_dmaaudio.c:167: 错误:“asm”操作数不可能 约束条件: * [生成/SDL_dmaaudio.lo]错误1

    请帮我提些有价值的建议。

    谢谢,

    1 回复  |  直到 15 年前
        1
  •  2
  •   Misha M    15 年前

    首先,不要将交叉编译器的路径设置为路径的第一部分,而是将其设置为最后一部分:

    export PATH=$PATH:<path to cross-compiler>
    

    这样比较安全。第二,跑 ./configure—帮助 得到所有的选择。如果更智能,错误消息将显示以下内容:

    1. 由于设置了--host标志,所以尝试交叉编译
    2. 但是您没有更改任何其他选项来查找目标环境的include和libs
    3. 默认情况下,我将使用/usr/include
    4. 但这是针对主机系统的,当交叉编译时它将不起作用

    检查需要设置的其他配置选项,以告知配置脚本在何处查找目标的.h文件(包括)和库。这些通常与您下载的交叉编译器一起提供。另外,在运行之前,您可能应该将CROSS-COMPILE环境变量设置为CROSS-compiler前缀 配置 . 前缀是交叉编译器中gcc之前的部分,假设您使用gcc作为交叉编译器。