如何设置环境变量GUILE_WARN_DEPRECATED?
How to set the environment variable GUILE_WARN_DEPRECATED?
我在我的 C 代码中使用了 guile(版本 2.0)(在 gcc 版本 4.8.5 和 OS centos 6 中编译)。
我的 makefile 看起来像这样。
CC=gcc
CFLAGS=-Wall -march=native -O2 -pipe -ffast-math -I/usr/include/guile/2.0
LDFLAGS=-lm -lguile -lgc -lpthread -lfftw3f -llapack
.PHONY: all
all: server mdclient_ash client
mdclient_ash: mdclient_ash.o
client: client.o mdlib.o ipp.o
mdmd: mdlib.o ${PROC_OBJS} mdmd.o ipp.o
mdmd.o: mdmd.c tsdmd.h
clean:
rm -rf *~ *.o sp/*.o sp/*~ pp/ff/*.o pp/fr/*~ pp/sf/*.o pp/st/*~
pp/rte/*.o pp/rte/*.~ server mdclient_ash client
编译过程会针对某些与诡计相关的错误发出警告,例如:
scm_int2num is deprecated (declared at /usr/include/guile/2.0/libguile/deprecated.h:667) [-Wdeprecated-declarations]
element = scm_list_ref(retval,scm_int2num(1));
没有错误。执行我的 C 文件(主文件,即 server.c
)后,出现以下错误:
Some deprecated features have been used. Set the environment variable GUILE_WARN_DEPRECATED to "detailed" and rerun the program to get more information. Set it to "no" to suppress this message.
如何以及在何处适当地设置环境变量 GUILE_WARN_DEPRECATED
?
你不要像server.c
那样执行C文件;您将它们编译成 server
之类的程序,然后 运行 that!
由于程序是运行时会出现该信息,所以需要在运行程序时设置环境变量。我假设您使用 POSIX shell 导数,例如 bash
; C shell 派生词的语法不同,例如 tcsh
.
您可以使用:
GUILE_WARN_DEPRECATED=detailed server
为程序的这次调用设置环境变量。
export GUILE_WARN_DEPRECATED=detailed; server
设置并导出环境变量,不需要再次重置,直到您在新的 window 中启动新的 shell,或者类似的东西。
将 export GUILE_WARN_DEPRECATED=detailed
添加到您的个人资料(~/.profile
,或 ~/.bash_profile
,或者 ~/.bashrc
文件)。现在,当您使用 shell.
登录或创建新的 window 时,将设置此设置
还有一些其他方法可以执行这些操作 - 它们是上述选项的微小变体。查看您的 shell 手册,了解启动时处理了哪些文件。
显然,最好停止使用已弃用的功能,所以详细的警告是最合适的设置。但是,您可能想忽略给您的警告,而不关心您的程序将来会中断,因此您会做一些愚蠢的事情并使用 GUILE_WARN_DEPRECATED=no
代替。我不能夸大那将是多么愚蠢 — 而不是 使用已弃用的函数。编辑代码并修复它以使用首选替换项。
我在我的 C 代码中使用了 guile(版本 2.0)(在 gcc 版本 4.8.5 和 OS centos 6 中编译)。
我的 makefile 看起来像这样。
CC=gcc
CFLAGS=-Wall -march=native -O2 -pipe -ffast-math -I/usr/include/guile/2.0
LDFLAGS=-lm -lguile -lgc -lpthread -lfftw3f -llapack
.PHONY: all
all: server mdclient_ash client
mdclient_ash: mdclient_ash.o
client: client.o mdlib.o ipp.o
mdmd: mdlib.o ${PROC_OBJS} mdmd.o ipp.o
mdmd.o: mdmd.c tsdmd.h
clean:
rm -rf *~ *.o sp/*.o sp/*~ pp/ff/*.o pp/fr/*~ pp/sf/*.o pp/st/*~
pp/rte/*.o pp/rte/*.~ server mdclient_ash client
编译过程会针对某些与诡计相关的错误发出警告,例如:
scm_int2num is deprecated (declared at /usr/include/guile/2.0/libguile/deprecated.h:667) [-Wdeprecated-declarations]
element = scm_list_ref(retval,scm_int2num(1));
没有错误。执行我的 C 文件(主文件,即 server.c
)后,出现以下错误:
Some deprecated features have been used. Set the environment variable GUILE_WARN_DEPRECATED to "detailed" and rerun the program to get more information. Set it to "no" to suppress this message.
如何以及在何处适当地设置环境变量 GUILE_WARN_DEPRECATED
?
你不要像server.c
那样执行C文件;您将它们编译成 server
之类的程序,然后 运行 that!
由于程序是运行时会出现该信息,所以需要在运行程序时设置环境变量。我假设您使用 POSIX shell 导数,例如 bash
; C shell 派生词的语法不同,例如 tcsh
.
您可以使用:
GUILE_WARN_DEPRECATED=detailed server
为程序的这次调用设置环境变量。export GUILE_WARN_DEPRECATED=detailed; server
设置并导出环境变量,不需要再次重置,直到您在新的 window 中启动新的 shell,或者类似的东西。将
export GUILE_WARN_DEPRECATED=detailed
添加到您的个人资料(~/.profile
,或~/.bash_profile
,或者~/.bashrc
文件)。现在,当您使用 shell. 登录或创建新的 window 时,将设置此设置
还有一些其他方法可以执行这些操作 - 它们是上述选项的微小变体。查看您的 shell 手册,了解启动时处理了哪些文件。
显然,最好停止使用已弃用的功能,所以详细的警告是最合适的设置。但是,您可能想忽略给您的警告,而不关心您的程序将来会中断,因此您会做一些愚蠢的事情并使用 GUILE_WARN_DEPRECATED=no
代替。我不能夸大那将是多么愚蠢 — 而不是 使用已弃用的函数。编辑代码并修复它以使用首选替换项。