-2

有这些特定的问题困扰着我和我的朋友。

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

2 回答 2

1

编译对 Sage 的更改就像

  • 更改代码
  • 跑步sage -b
  • 尝试您的新代码

请参阅开发人员指南,尽管它更侧重于制作补丁。如果它说编译成功,则编译成功。如果该文件只是一个 Python 文件,则将其复制并字节码编译到不同的目录(local/lib/python/site-packages/sage/我认为);否则 Cython 文件首先被翻译成 C,然后编译,然后发送到它所属的地方。

现在,如果您对碰巧在 Sage 中使用 gcc 感兴趣,您必须首先知道它是否已实际构建(而不是使用您的系统 gcc),这仅在 gcc“太旧”或在在某些情况下“太新”,然后调用该二进制文件(我不确定它安装在哪里),然后做你通常做的任何事情。

如果这有点模糊,那是因为您的问题同样模糊;我相信有人会很乐意回答后续问题。例如,许多人创建新的 Cython 文件并使用笔记本对其进行分析。有关所有这些内容的更多信息,请参阅 Sage 文档。

于 2012-06-20T15:16:50.747 回答
1

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

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

当你问“你怎么知道编译是否成功?” 你的意思是Sage本身的编译?最好的办法是

$ export SAGE_CHECK=yes
$ make ptestlong

The first line turns on self-tests for every Sage package which has them. The second line builds Sage and then runs its "long" test suite, in parallel. (If you mean compilation of any program using Sage's gcc, this is not really Sage-specific. Sage's installation of gcc should be a fully functional version of gcc.)

于 2012-06-21T17:05:06.233 回答