【发布时间】:2014-10-06 01:06:56
【问题描述】:
我尝试在这个 C 应用程序 libquantum 中运行名为 grover.c 的 .c 文件
www.libquantum.de/files/libquantum-1.1.1.tar.gz
现在我这个应用程序已经包含了一个 Makefile.in,我可以使用命令生成名为 shor 和 grover 的可执行文件
./configure
make
make demos
但是当我尝试使用 gcc 或这样的族群运行 grover.c 时
clang grover.c
它给了我很多未定义函数引用的错误。
在函数oracle':
grover.c:(.text+0x50): undefined reference toquantum_sigma_x'
grover.c:(.text+0x89): 未定义对quantum_toffoli'
grover.c:(.text+0xc8): undefined reference toquantum_toffoli' 的引用
grover.c:(.text+0xf2): 未定义对quantum_cnot'
grover.c:(.text+0x137): undefined reference toquantum_toffoli' 的引用
grover.c:(.text+0x16b): 未定义引用quantum_toffoli'
grover.c:(.text+0x1b0): undefined reference toquantum_sigma_x'
我需要知道如何消除此错误以及是否可以在此应用程序中运行名为 grover.c 的 c 代码。
谢谢,
【问题讨论】:
-
我认为您误解了编译器的作用。要运行 grover,只需输入
grover,无需调用 clang。 -
但是当我需要编译单个 C 代码时,我会执行 clang hello.c 或 gcc hello.c 之类的操作,它会创建一个可执行文件。在这种情况下,我需要运行这个 grover.c 文件。实际上,我想在另一个软件中运行这个文件来分析它的处理器使用情况。
-
如果您查看makefile,您可能会在其中看到很多东西。如果您查看
clang grover.c,您可能会发现缺少很多东西。这就是为什么它不适合你。您不能只从大型项目中删除单个源文件并期望能够将其转换为可执行文件。它出现在该库的项目中的事实非常强烈地表明它将使用该库中的某些功能,而您将对其保留。