Compiler construction 关于Sage编程的特定问题

Compiler construction 关于Sage编程的特定问题,compiler-construction,compilation,sage,Compiler Construction,Compilation,Sage,有一些问题困扰着我和我的朋友 如何在sage中使用gcc编译器 您如何知道编译是否成功 重新编译源文件时会发生什么情况 编译对Sage的更改非常简单 更改代码 正在运行sage-b 尝试你的新代码 请看,尽管这更多地集中在制作补丁上。如果说编译成功,则编译成功。如果该文件只是一个Python文件,则会将其复制并将字节码编译到另一个目录中(local/lib/Python/site packages/sage/,我认为);否则,Cython文件首先被翻译成C,然后被编译,然后被发送到它所属的

有一些问题困扰着我和我的朋友

  • 如何在sage中使用gcc编译器
  • 您如何知道编译是否成功
  • 重新编译源文件时会发生什么情况

编译对Sage的更改非常简单

  • 更改代码
  • 正在运行sage-b
  • 尝试你的新代码
请看,尽管这更多地集中在制作补丁上。如果说编译成功,则编译成功。如果该文件只是一个Python文件,则会将其复制并将字节码编译到另一个目录中(
local/lib/Python/site packages/sage/
,我认为);否则,Cython文件首先被翻译成C,然后被编译,然后被发送到它所属的地方

现在,如果您对在Sage中使用gcc感兴趣,您必须首先知道它是否已经构建(与使用您的系统gcc相反),只有当gcc“太旧”或在某些情况下“太新”时才会发生这种情况,然后调用该二进制文件(我不确定它安装在哪里),然后执行您通常执行的操作


如果这一切都有点模糊,那是因为你的问题同样模糊;我相信有人会很乐意回答后续问题。例如,许多人创建新的Cython文件,并使用笔记本来分析它们。有关所有这些方面的更多信息,请参阅Sage文档。

关于Sage中的gcc编译器:正如kcrisman所说,它主要存在于Sage中,因为某些平台上的某些gcc版本存在缺陷(例如,OS X Lion上最新版本的Xcode中的gcc)。它主要用于构建Sage的各种组件:当您运行
make
时,如果Sage安装过程决定您的平台需要构建gcc,它会尽早构建gcc,然后使用它构建其他所有内容

如果Sage构建gcc,那么在(重新)编译Cython文件时也会使用它。(如果Sage不构建gcc,则使用系统gcc。)

当你问“你如何知道编译是否成功?”时,你指的是Sage本身的编译吗?最好的办法是

$ export SAGE_CHECK=yes
$ make ptestlong

第一行打开每个Sage包的自检。第二行构建Sage,然后并行运行其“长”测试套件。(如果你指的是使用Sage的gcc编译任何程序,这并不是真正针对Sage的。Sage安装的gcc应该是一个功能齐全的gcc版本。)

为什么这些问题是针对这个夏天的?@Quentin,因为我们在这个夏天开始/了解了Sage!)