ARM Cortex M 处理器的 GNU 科学库编译错误
GNU Scientific Library Compilation Error for ARM Cortex M Procssor
我正在用 C 语言做小波,幸运的是找到了 GSL-2.1。我正在尝试在 Code Composer Studio 以及 Energia 15 中为 ARM Cortex-M 处理器连接 GSL-2.1。代码非常简单
#include <stdio.h>
#include <math.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_vector.h>
#include <gsl/gsl_blas.h>
#include <gsl/gsl_test.h>
#include <gsl/gsl_wavelet.h>
#include <gsl/gsl_wavelet2d.h>
int i, n=256, nc=20;
double data[256];
double abscoeff[256];
gsl_wavelet *w;
gsl_wavelet_workspace *work;
int main(){
w = gsl_wavelet_alloc (gsl_wavelet_daubechies, 4);
work = gsl_wavelet_workspace_alloc(256);
}
即使对于这段代码,编译器也会在 Energia 15 中给出以下错误。
error: 'w' does not name a type
error: 'work' does not name a type
并且 Code Composer Studio 显示以下错误
undefined first referenced
symbol in file
--------- ----------------
gsl_wavelet_alloc ./main.obj
gsl_wavelet_daubechies ./main.obj
gsl_wavelet_workspace_alloc ./main.obj
error #10234-D: unresolved symbols remain
我已经问过了 here 并尝试在代码中做一些修改。我不得不添加近 5 个 c 文件以减少#errors。现在我只收到一个错误
" RETURN_IF_NULL undef symbol first referenced in ./main.obj "
当然我需要在这里添加一个或多个.c 文件,但我迷路了。你能帮我在这里添加哪个文件吗?
任何帮助将不胜感激。
阅读 documentation,在我看来似乎缺少一个宏 (RETURN_IF_NULL(x) if (!x) { return ; }
)
应该由 autoconf 工具创建,使用 configure.ac
中的信息,并添加到 config.h
文件中,如 config.h.
在源代码中,在文件configure.ac
中,有一个指令:
AH_BOTTOM([#define RETURN_IF_NULL(x) if (!x) { return ; }
])
指示 autoconf 在文件 config.h 的末尾添加宏,该文件是在 运行 ./configure
脚本之后创建的(在我的 OSX 上测试过) 10.10, gsl-2.1).
我猜是配置过程中出错了。如果你在 gsl 的 include 目录中已经有一个配置文件,那么你可以在最后添加:
RETURN_IF_NULL(x) if (!x) { return ; }
或者您可以创建它,然后将其包含在您的源文件中。
我正在用 C 语言做小波,幸运的是找到了 GSL-2.1。我正在尝试在 Code Composer Studio 以及 Energia 15 中为 ARM Cortex-M 处理器连接 GSL-2.1。代码非常简单
#include <stdio.h>
#include <math.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_vector.h>
#include <gsl/gsl_blas.h>
#include <gsl/gsl_test.h>
#include <gsl/gsl_wavelet.h>
#include <gsl/gsl_wavelet2d.h>
int i, n=256, nc=20;
double data[256];
double abscoeff[256];
gsl_wavelet *w;
gsl_wavelet_workspace *work;
int main(){
w = gsl_wavelet_alloc (gsl_wavelet_daubechies, 4);
work = gsl_wavelet_workspace_alloc(256);
}
即使对于这段代码,编译器也会在 Energia 15 中给出以下错误。
error: 'w' does not name a type
error: 'work' does not name a type
并且 Code Composer Studio 显示以下错误
undefined first referenced
symbol in file
--------- ----------------
gsl_wavelet_alloc ./main.obj
gsl_wavelet_daubechies ./main.obj
gsl_wavelet_workspace_alloc ./main.obj
error #10234-D: unresolved symbols remain
我已经问过了 here 并尝试在代码中做一些修改。我不得不添加近 5 个 c 文件以减少#errors。现在我只收到一个错误
" RETURN_IF_NULL undef symbol first referenced in ./main.obj "
当然我需要在这里添加一个或多个.c 文件,但我迷路了。你能帮我在这里添加哪个文件吗? 任何帮助将不胜感激。
阅读 documentation,在我看来似乎缺少一个宏 (RETURN_IF_NULL(x) if (!x) { return ; }
)
应该由 autoconf 工具创建,使用 configure.ac
中的信息,并添加到 config.h
文件中,如 config.h.
在源代码中,在文件configure.ac
中,有一个指令:
AH_BOTTOM([#define RETURN_IF_NULL(x) if (!x) { return ; }
])
指示 autoconf 在文件 config.h 的末尾添加宏,该文件是在 运行 ./configure
脚本之后创建的(在我的 OSX 上测试过) 10.10, gsl-2.1).
我猜是配置过程中出错了。如果你在 gsl 的 include 目录中已经有一个配置文件,那么你可以在最后添加:
RETURN_IF_NULL(x) if (!x) { return ; }
或者您可以创建它,然后将其包含在您的源文件中。