如何将交叉编译器与 Scons 一起使用?

2024-01-17

遵循建议关于斯康斯常见问题解答 http://www.scons.org/wiki/FrequentlyAskedQuestions#Why_doesn.27t_SCons_find_my_compiler.2BAC8-linker.2BAC8-etc..3F_I_can_execute_it_just_fine_from_the_command_line.并从一个,我建立了一个非常简单的SConstruct and SConscript我认为会构建一个示例应用程序,但出现错误:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
nios2-linux-gnu-g++ -o src/bin/example/example.o -c src/bin/example/example.cpp
sh: nios2-linux-gnu-g++: command not found
scons: *** [src/bin/example/example.o] Error 127
scons: building terminated because of errors.

Ugh. My SConstruct file:

import os

env_options = {
    "CC"    : "nios2-linux-gnu-gcc",
    "CXX"   : "nios2-linux-gnu-g++",
    "LD"    : "nios2-linux-gnu-g++",
    "AR"    : "nios2-linux-gnu-ar",
    "STRIP" : "nios2-linux-gnu-strip",
    "PATH"  : os.environ['PATH']
}

env = Environment(**env_options)
Export('env')

env.SConscript("src/bin/example/SConscript")

以及它调用的 SConscript:

Import('env')

env.Program("example", ["example.cpp"])

这是我认为的相关部分env.Dump()(如果缺少某些内容请告诉我):

{ 'AR': 'nios2-linux-gnu-ar',
  'CC': 'nios2-linux-gnu-gcc',
  'CCCOM': '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES',
  'CCFLAGS': [],
  'CCVERSION': '4.8.2',
  'CFILESUFFIX': '.c',
  'CFLAGS': [],
  'CPPDEFPREFIX': '-D',
  'CPPDEFSUFFIX': '',
  'CPPSUFFIXES': [ '.c',
                   '.C',
                   '.cxx',
                   '.cpp',
                   '.c++',
                   '.cc',
                   '.h',
                   '.H',
                   '.hxx',
                   '.hpp',
                   '.hh',
                   '.F',
                   '.fpp',
                   '.FPP',
                   '.m',
                   '.mm',
                   '.S',
                   '.spp',
                   '.SPP',
                   '.sx'],
  'CXX': 'nios2-linux-gnu-g++',
  'CXXCOM': '$CXX -o $TARGET -c $CXXFLAGS $CCFLAGS $_CCCOMCOM $SOURCES',
  'CXXFILESUFFIX': '.cc',
  'CXXFLAGS': [],
  'CXXVERSION': '4.8.2',
  'HOST_ARCH': None,
  'HOST_OS': None,
  'PATH': '/home/chockey/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/chockey/bin/altera/13.1/quartus/bin:/home/chockey/bin/altera/13.1/quartus/sopc_builder/bin:/home/chockey/bin/altera/13.1/nios2eds/bin:/home/chockey/bin/altera/13.1/nios2eds/sdk2/bin:/home/chockey/bin/altera/13.1/nios2eds/bin/gnu/H-i686-pc-linux-gnu/bin',
  'TOOLS': [ 'default',
             'gnulink',
             'gcc',
             'g++',
             'gfortran',
             'gas',
             'ar',
             'filesystem',
             'm4',
             'lex',
             'yacc',
             'rpcgen',
             'jar',
             'javac',
             'javah',
             'rmic',
             'dvipdf',
             'gs',
             'tar',
             'zip'],

这些工具肯定存在于第一个路径条目中(作为符号链接,如果这很重要,但我尝试将完整路径添加到工具链,这似乎没有改变任何内容):

/home/chockey/bin/nios2-linux-gnu-addr2line@   /home/chockey/bin/nios2-linux-gnu-gcov@
/home/chockey/bin/nios2-linux-gnu-ar@          /home/chockey/bin/nios2-linux-gnu-gdb@
/home/chockey/bin/nios2-linux-gnu-as@          /home/chockey/bin/nios2-linux-gnu-gprof@
/home/chockey/bin/nios2-linux-gnu-c++@         /home/chockey/bin/nios2-linux-gnu-ld@
/home/chockey/bin/nios2-linux-gnu-c++filt@     /home/chockey/bin/nios2-linux-gnu-nm@
/home/chockey/bin/nios2-linux-gnu-cpp@         /home/chockey/bin/nios2-linux-gnu-objcopy@
/home/chockey/bin/nios2-linux-gnu-elfedit@     /home/chockey/bin/nios2-linux-gnu-objdump@
/home/chockey/bin/nios2-linux-gnu-g++@         /home/chockey/bin/nios2-linux-gnu-ranlib@
/home/chockey/bin/nios2-linux-gnu-gcc@         /home/chockey/bin/nios2-linux-gnu-readelf@
/home/chockey/bin/nios2-linux-gnu-gcc-4.7.3@   /home/chockey/bin/nios2-linux-gnu-size@
/home/chockey/bin/nios2-linux-gnu-gcc-ar@      /home/chockey/bin/nios2-linux-gnu-sprite@
/home/chockey/bin/nios2-linux-gnu-gcc-nm@      /home/chockey/bin/nios2-linux-gnu-strings@
/home/chockey/bin/nios2-linux-gnu-gcc-ranlib@  /home/chockey/bin/nios2-linux-gnu-strip@

如何让 scons 找到我的工具链?


你快到了。您正在添加您的PATH到 SCons 构建环境而不是ENV施工环境要点:

import os

env_options = {
    "CC"    : "nios2-linux-gnu-gcc",
    "CXX"   : "nios2-linux-gnu-g++",
    "LD"    : "nios2-linux-gnu-g++",
    "AR"    : "nios2-linux-gnu-ar",
    "STRIP" : "nios2-linux-gnu-strip",
}

env = Environment(**env_options)
env.Append(ENV = {'PATH' : os.environ['PATH']})
Export('env')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将交叉编译器与 Scons 一起使用? 的相关文章

  • 如何让 SCons 替换已安装文本文件中的文本

    我希望能够在从 scons 安装一些 python 脚本时替换模板变量 SOFTWARE VERSION scons已经有这样的功能了吗 如果没有 那么挂钩 scons 安装过程的最佳方法是什么 以便我可以在安装过程中执行此操作 你可以使用
  • 交叉编译 Python 2 Xcode 时出现问题:kivy-ios 发行版抛出错误

    我正在尝试编译 kity ios本教程 http kivy org docs guide packaging ios html 但跑完之后tools build all sh 我收到以下错误 EDIT checking for armv7
  • 调试 pthread 需要什么?

    我想在我的自定义 Linux 发行版上调试 pthreads 但我缺少一些东西 我的主机是 Ubuntu 12 04 我的目标是使用 crosstool NG 交叉编译器工具集构建的 i486 定制嵌入式 Linux 操作系统的其余部分是使
  • 寻找一个好的 C++ 库来解析 AMF3 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SCons - 非标准位置的标头/库

    我正在尝试使用 SCons 编译一个程序 该程序需要一组我已安装在非标准位置的依赖项 我已将依赖项安装在 home dja ocr 中 现在我正在尝试编译主程序 但不知道如何告诉 SCons 在哪里查找库和标头 我已经尝试过 除其他外 sc
  • 交叉编译 C++ 项目,通用 ELF 中的重定位 (EM: 3)

    我从事 C 项目已经有一段时间了 但想将其移植到我的 Arm 处理器上 我已经拥有所有交叉编译工具 我正在使用 CodeSourcery 并且认为我可以更改我的 makefile 以指向该编译器 它使用默认的 g 编译得很好 但是当尝试 m
  • 交叉编译:如何使用一个前缀安装,并使用不同的前缀部署?

    我正在尝试为替代架构交叉编译一些应用程序 我的典型流程如下 下载源代码并将其解压到 var source 中 configure prefix var install CC my cross compiler gcc make 进行安装 这
  • 如何在 Eclipse CDT 中配置特定的 GCC 交叉工具链?

    我导入了一些源代码C Makefile Project到 Eclipse CDT 工作区 并指定Cross GCC 索引器设置 工具链 项目导入进展顺利 但包含路径设置仅指向我当前的本机主机 GCC 实现 我一直在寻找Toolchain E
  • 无法使用 Debian squeeze 在 Sheevaplug (armv5t) 上构建节点

    我现在已经尝试了几种在运行 Debian 版本 6 0 2 squeeze 的 Sheevaplug armv5t 上构建节点 版本 0 5 1 的方法 但最终总是 node Illegal instruction 在所有情况下我都可以编译
  • 如何使用 MinGW 在 Linux 上构建 Crypto++ 库?

    我正在尝试将 c 项目从 Visual Studio 2013 移植到 ubuntu 上的 netbeans 目标是一个Windows可执行文件 到目前为止我能够使用mingw作为编译器从netbeans编译Windows exe文件 该项
  • 在交叉编译时我必须对 C++ 库做什么?

    这是我的配置的编译器部分 IF UNIX Compiler flags specify the cross compiler SET CMAKE C COMPILER home username projects buildroot out
  • 交叉编译 PHP [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已经下载了 PHP 5 4 0 源代码 将其解压并移至源文件夹中 我做了一个配置 configure build x86 64 unknown li
  • 针对 Windows Phone ARM 目标的 Clang 交叉编译

    我想使用 Clang 为 Windows Phone ARM 目标编译一个用 C 编写的程序 有人有这方面的经验吗 什么是更好的方法 1 使用 Clang for Windows 和 MinGW 在运行 Windows 8 的主机上构建 C
  • Mingw64-w64 属性(格式)和 标头

    交叉编译时 我在让 cinttypes 在 mingw64 w64 上正常工作时遇到严重问题 我已经将其简化为在 docker 中运行的最小示例 inttypes test cpp include
  • Android 交叉编译时链接器错误

    我想为 Android 交叉编译我的项目 我创建了 cargo config 如下 target armv7 linux androideabi ar optHDD AndroidNDK toolchains llvm prebuilt l
  • 将 C++ 应用程序从 Linux 交叉编译到 Windows 的手册?

    是否有从 Linux 到 Windows 交叉编译 C 应用程序的手册 只是 我想要一些信息 链接 参考 示例 来指导我做到这一点 我什至不知道这是否可能 我的目标是在 Linux 中编译一个程序并获得一个可以在 Windows 下运行的
  • 交叉编译器默认包含路径设置

    首先 一些背景知识 我正在尝试在 Beagleboard xM 上编写 Android 驱动程序和应用程序 我已经下载了他们的 Android 开发套件 安装了它 并且可以使用以下指示成功构建其中的所有内容http processors w
  • 如何设置 scons 系统包含路径

    使用 scons 我可以轻松设置我的包含路径 env Append CPPPATH foo 这传递了标志 Ifoo to gcc 不过 我正在尝试在启用大量警告的情况下进行编译 特别是与 env Append CPPFLAGS Werror
  • GStreamer 上的“列入黑名单”是什么意思?

    我正在尝试交叉编译 GStreamer 版本是1 2 3 主机PC的操作系统是x86 linux 目标系统的操作系统是MIPSEL linux操作系统 我成功为目标设备编译了 gstreamer 和插件 和gst launch 1 0可以被
  • 交叉编译armv5,但它创建v7二进制文件

    我设法为arm926ej s创建了一个目标文件我在 qemu 上使用 Debian Arm arm linux gnueabi gcc 4 4 static O c mcpu arm926ej s hello c o hello root

随机推荐