【发布时间】:2012-06-20 09:02:47
【问题描述】:
有些问题困扰着我和我的朋友。
- 在sage中如何使用gcc编译器?
- 如何知道编译是否成功?
- 重新编译源文件时会发生什么?
【问题讨论】:
-
为什么这些问题只针对今年夏天?
-
@Quentin 因为我们今年夏天开始/了解了 Sage! :)
标签: compiler-construction compilation sage
有些问题困扰着我和我的朋友。
【问题讨论】:
标签: compiler-construction compilation sage
编译对 Sage 的更改就像
一样简单sage -b
请参阅the developer guide,尽管它更侧重于制作补丁。如果它说编译成功,则编译成功。如果文件只是一个 Python 文件,则将其复制并字节码编译到不同的目录(local/lib/python/site-packages/sage/,我认为);否则 Cython 文件首先被翻译成 C,然后编译,然后发送到它所属的地方。
现在,如果您对碰巧在 Sage 中使用 gcc 感兴趣,您必须首先知道它是否已经实际构建(而不是使用您的系统 gcc),只有当 gcc“太旧”时才会发生这种情况"或者在某些情况下"太新",然后调用那个二进制文件(我不确定它安装在哪里),然后做你通常做的事情。
如果这有点含糊,那是因为您的问题同样含糊;我相信有人会很乐意回答后续问题。例如,许多人创建新的 Cython 文件并使用笔记本对其进行分析。有关所有这些内容的更多信息,请参阅 Sage 文档。
【讨论】:
关于 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
第一行为每个拥有自测功能的 Sage 软件包打开了自测功能。第二行构建 Sage,然后并行运行它的“长”测试套件。 (如果您的意思是使用 Sage 的 gcc 编译任何程序,这并不是 Sage 特定的。Sage 安装的 gcc 应该是 gcc 的全功能版本。)
【讨论】: